Пакетный скрипт для запуска скрипта Powershell: мигающее окно - PullRequest
2 голосов
/ 02 апреля 2020

Система: Windows 10
Версия Powershell: 5.1

Назначение: запустить сценарий powershell из пакетного файла Параметры: Каталог, Имя файла, Сервер, Имя пользователя, Пароль, передаваемые в виде строки в «» при вызове команды для обработки ситуации, когда есть пробел (например, в каталоге, в котором в данный момент есть пробел)

Сценарий Powershell работает отлично, он создает учетные данные и запускает соединение RDP без вопросы. Однако при вызове из командного файла окно Powershell мигает и сразу закрывается. Окно командной строки запускается от имени администратора.
Я пытался использовать:
- пауза
- -noexit
- код из https://blog.danskingdom.com/allow-others-to-run-your-powershell-scripts-from-a-batch-file-they-will-love-you-for-it/

if ($Host.Name -eq "ConsoleHost")  
{  
    Write-Host "Press any key to continue..."  
    $Host.UI.RawUI.FlushInputBuffer()   # Make sure buffered input doesn't "press a key" and skip the ReadKey().  
    $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null  
}
  • Нажатие на появившееся окно Powershell (чтобы попытаться заставить функцию выбора приостановить окно).
    Ничего из этого не сработало.

Код, о котором идет речь:

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File """"%PowerShellScriptPath%"""" """"%server%"""" """"%username%"""" """"%password%""""' -Verb RunAs}";

За пределами этого кода в систему не было внесено никаких изменений, четыре речевых отметки были помечены как обязательные для прохождения параметров и могут быть найдены по ссылке в блоге выше в нижней части непосредственно перед комментариями. Есть большая вероятность, что я использую это неправильно, я новичок в пакетировании и еще новее в powershell. Пакетные скрипты создаются как можно более внутренними, их необходимо использовать при базовой установке Windows. В конечном итоге они будут перенесены на версии Windows Server 2008 и выше.

Нужно ли что-то делать с командной строкой, чтобы она могла запускать код Powershell? Является ли код powershell правильным для той цели, для которой я собираюсь его использовать? Есть ли способ, кроме перечисленных, просмотреть ошибку, записать информацию в журнал или приостановить окно powershell при запуске из пакетного сценария?

Любой ввод будет очень полезен!

Изменить:
-Нет выхода из вариантов:
Родительский вызов

PowerShell **-NoExit**  -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File """"%PowerShellScriptPath%"""" """"%server%"""" """"%username%"""" """"%password%""""' -Verb RunAs}";  

Вложенный вызов

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '**-NoExit** -NoProfile -ExecutionPolicy Bypass -File """"%PowerShellScriptPath%"""" """"%server%"""" """"%username%"""" """"%password%""""' -Verb RunAs}";  

Родительский и вложенный

PowerShell **-NoExit**  -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '**-NoExit** -NoProfile -ExecutionPolicy Bypass -File """"%PowerShellScriptPath%"""" """"%server%"""" """"%username%"""" """"%password%""""' -Verb RunAs}"; 

Переменные, установленные внутри пакетного сценария как:

  • SET server =% ~ 1 Удалить кавычки, которые я также пытался использовать:

  • сервер SET =% 1
    сервер SET = сервер%: "=%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...