("$_ bad \\$_\c$\Program Files (x86)\1cv8\", "$_ good")[(Test-Path "\\$_\c$\Program Files (x86)\1cv8\8.3.22.1750")]
который, вы наверняка не понимаете, переделаете на просто if () {} else {}
тогда сможете вставить куда надо проверку на доступность через Test-NetConnection
И вот эти исходники посмотрите https://github.com/PowerShell/PSReadLine
По-умолчанию PSReadline входит в комплект и автозапускается на любом PS v5.1+ и наверняка он перехватывает все ваши "кнопки"
Отдельно обратите внимание на MockPSConsole/ и PSReadLine/Movement.cs, PSReadLine/PlatformWindows.cs
mcs - это просто описатель того, какие окошки создать, с какими размерами, какие менюшки сделать и к каким окошкам какую dll привязать.
А как эти dll заставить работать, зависит уже от них самих.
никаких "результатов в файл" там быть не может. это чисто гуй.
Разве что, если среди Actions там есть "экспортировать", можно предположить, что через вызовы dll можно как-то до них добраться.
Вот тут есть про api https://learn.microsoft.com/en-us/previous-version...
Но, по моему, это тупиковый путь, через COM будет проще
Egor Irvin, Ну а на файл сам посмотреть CSP40R2Setup.exe ?
может там действительно текст вместо exe - скорее всего там html с сообщением об ошибке скачивания или необходимости логина
Сергей, Ну если вы вообще не очень понимаете откуда берётся цвет, оно у вас наверняка заработает и через runspace, возможно с добавкой format/out-string
Сергей, в PSv7 цвета рисует консоль на основе всяких esc последовательностей (ANSI, тот самый код 27) если вы их видите в выводе после ToString() - значит они никуда не делись
Информация о раскраске-то где-то берётся. надо API посмотреть как реализовано, я не вчитывался
Вы вообще с консольного вывода как цвета берёте себе ?
Сергей, Ну если вы команды передаёте туда неинтерактивно(сразу всё скопом), то powershell никаких "признаков окончания" не выводит в поток.
тут, разве что, ждать перевод строки.
Если интерактивно - вы можете попробовать парсить приглашение (prompt PS ...>)
Всё ж использование натива выглядит перспективнее :)
Сергей, Всего скрипта - это получить сразу и Hey1 и Hey2 после 10 секунд ожидания
А отдельных команд - это получить Hey1, потом долго ничего не получать и потом получить Hey2
Судя по всему, вам нужен второй
Второй вариант предполагает, что вы команды запускаете и ожидаете вывода асинхронно, иначе от первого отличаться не будет ничем.
WaterWalk, ответ Евгения таки приближает вас к верному ответу с использованием Powershell, хотя и не на 100%
Ну а мой ответ вообще решает вашу задачу без powershell
а замена os.system на subprocess.Popen ничего не меняет по сути в вопросе и, следовательно, ничего н изменит в ответе
cscript вот только, по-моему, не умеет в runas
разве что runas cscript... но тут надо знать логин админа
или уж сразу всё на vbs ShellExecute переписать :)