Что нового

Запуск внешних программ

Пост номер 2 был отмечен как лучший ответ.

mez

Новичок
Сообщения
9
Репутация
0
Всем привет!
Столкнулся с проблемой и никак не могу найти решение.
Работаю в ОС Windows 10. В своей работе использую Powershell.
Через Powershell без проблем работает командлет определения локального пользователя. К примеру: Get-Localuser defaultaccount (выведет необходимую информацию. Данный командлет есть в win10 из коробки. Версия PS 5.1).
Появилась нужда выполнить вызов Powershell через Autoit.

Вначале для теста вывожу в autoit дату из powershell:
Код:
$com = 'powershell.exe get-date'
$d = run(@ComSpec&' /c '&$com, '',@SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($d)
MsgBox(0,'1',StdoutRead($d))



Все работает ок, после чего пытаюсь применить нужную мне команду:

Код:
$com = 'powershell.exe Get-Localuser defaultaccount'
$d = run(@ComSpec&' /c '&$com, '',@SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($d)
MsgBox(0,'1',StdoutRead($d))


Результата не получаю. Попытался выявить причину неработоспособности -> ошибка командлет get-localuser не найден.
Чего только не делал, указывал рабочую папку PS/папку модуля с командлетом в команде RUN, делал в одной команде импорт необходимого модуля (c нужными путями), после чего вызов командлета - все безуспешно.

Уважаемые знатоки - мб кто сталкивался с подобным поведением? Знаю, что Powershell тут не к чему, но уже чисто профессиональный интерес.
 

Tempo

Скриптер
Сообщения
509
Репутация
153
Код:
#include <AutoItConstants.au3>
#include <WinAPIFiles.au3>
_WinAPI_Wow64EnableWow64FsRedirection(False)

Local $sCom = "powershell.exe Get-Localuser defaultaccount"
Local $iPID = Run($sCom, "", @SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($iPID)
MsgBox(0, '1', StdoutRead($iPID))
 
  • Like
Реакции: mez
Автор
M

mez

Новичок
Сообщения
9
Репутация
0
Tempo, Огромное спасибо! Проблема решена :smile::ok::drinks::good:
 
Верх