Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] использование команд Powershell в скриптах AutoIT

Ответить
Настройки темы
[решено] использование команд Powershell в скриптах AutoIT

Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: andr_mozg
Дата: 16-12-2009
необходимость есть заручится поддержкой powershell

есть код
Код: Выделить весь код
#include <Constants.au3>


$Cmd = 'dsquery'


$PowerShell = Run('PowerShell.exe '&$Cmd, "", @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD + $STDIN_CHILD)       

StdinWrite($PowerShell)

While 1
    $line = StdoutRead($PowerShell)
    If @error Then ExitLoop
    If $line <> "" Then
    MsgBox(0,"",$line)
    EndIf
Wend

While 1
    $line = StderrRead($PowerShell)
    If @error Then ExitLoop
    MsgBox(0,"",$line)
Wend
но вот беда по русски он не может писать.... что можно придумать?
может есть другой способ взаимодействия с powershell ?

Отправлено: 15:24, 16-12-2009

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3036
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Предупреждение за нарушение общих правил (П. 2.7).
Жду переименования темы.




По поводу самой темы...
А для тех кто не вкурсе, можно описать что такое Powershell, и главное, как проверить пример, или нам нужно гадать?

Хотя попробую... Есть библиотека Encoding.au3, там есть функций конвертирования строк, может одна из них подойдёт (например _StringOEM2ANSI).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 16-12-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


_StringOEM2ANSI

помогло, но тему пока не закрываю, может есть более лучший вариант

Отправлено: 16:24, 16-12-2009 | #3


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3036
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Цитата andr_mozg:
может есть более лучший вариант »
В соответствий с названием темы, другого варианта просто нет .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 16:35, 16-12-2009 | #4


Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <Constants.au3>
#include <Encoding.au3>

$comand="dsquery"
$foo = Run(@ComSpec & " /c powershell " & $comand, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
$out=""
$line=""

While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    if $line <>"" then $out=$out & _StringOEM2ANSI($line)
	
Wend

	MsgBox(0,"",$out)
рабочий вариант но всё равно не нравится.....

Последний раз редактировалось andr_mozg, 16-12-2009 в 17:31.


Отправлено: 17:15, 16-12-2009 | #5


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


andr_mozg, а зачем запусть PS через cmd? лучше уж сразу
Код: Выделить весь код
Run('PowerShell ' & $command, ...)

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 18:07, 16-12-2009 | #6


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3036
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <Constants.au3>
#include <Encoding.au3>

$comand="dsquery"
$foo = Run("powershell " & $comand, @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$out=""
$line=""

While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    If $line <>"" Then $out &= $line
Wend

$out = _StringOEM2ANSI($out)
MsgBox(0, "", $out)
Так работает?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 22:33, 16-12-2009 | #7


Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


всё правельно пожно запускать через CMD, но есть проблема... при попытки послать сложную команду ,
ответа нет.... пока немогу понять почему.... ((

Отправлено: 18:01, 18-12-2009 | #8


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


мде.. вот и все, что я могу сказать

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 18:35, 18-12-2009 | #9


Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


вот вроде рабочий вариант

Код: Выделить весь код
Func _power($value)
	
	local $PowerShell = Run(@ComSpec & " /c " &$value, @SystemDir, @SW_HIDE , $STDERR_MERGED + $STDIN_CHILD)       
	local $out="", $err=""
	StdinWrite($PowerShell)
	While 1
		$line = StdoutRead($PowerShell)
		
		If @error Then ExitLoop
		If $line <> "" Then
		$out&=_StringOEM2ANSI($line)
		EndIf
	Wend
	

	if $out="" then
		$out=""
		While 1
			$err = StderrRead($PowerShell)
			If @error Then ExitLoop
			If $line <> "" Then
				$out&=_StringOEM2ANSI($err)
			EndIf

		Wend	
	endif	
	
	If $PowerShell Then ProcessClose($PowerShell)
	if $out <> "" then Return $out

EndFunc

Отправлено: 13:25, 21-12-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] использование команд Powershell в скриптах AutoIT

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Автоматический запуск скрипта PowerShell по времени. KAB Скриптовые языки администрирования Windows 7 06-03-2012 10:20
Разное - Использование команд из user.exe(dll) n9271217 Microsoft Windows 2000/XP 0 13-01-2009 14:58
Система - [решено] PowerShell, Get-QADComputer, Win32_NetworkLoginProfile somes Программирование и базы данных 1 10-11-2008 20:57
Иероглифы в скриптах nforcer Автоматическая установка Windows 2000/XP/2003 0 30-08-2006 22:30




 
Переход