Я пытаюсь написать скрипт-оболочку в Powershell, которому передается имя исполняемого файла, выполняется некоторая предварительная обработка, а затем вызывается этот исполняемый файл с аргументами, полученными в результате этой предварительной обработки. Я хочу, чтобы исполняемый файл представлял собой все, что вы можете запустить / открыть на Windows, поэтому я хочу использовать Start-Process
для его запуска, чтобы вызывал второй сценарий с аргументами из сценария (который ссылается на Invoke-Expression
) не очень актуально. Я обнаружил, что когда исполняемый файл представляет собой другой скрипт Powershell, сценарий не видит аргументов.
Мой маленький глупый тест:
Write-Output "Arg0: '$($Args[0])', Arg1: '$($Args[1])'" >>test.log
И работает над PS подскажите вот что я вижу:
PS C:\Source> .\test.ps1 a b
PS C:\Source> more .\test.log
Arg0: 'a', Arg1: 'b'
PS C:\Source> .\test.ps1 c d
PS C:\Source> more .\test.log
Arg0: 'a', Arg1: 'b'
Arg0: 'c', Arg1: 'd'
PS C:\Source> Start-Process .\test.ps1 -ArgumentList e,f
PS C:\Source> Start-Process .\test.ps1 -Args e,f
PS C:\Source> more .\test.log
Arg0: 'a', Arg1: 'b'
Arg0: 'c', Arg1: 'd'
Arg0: '', Arg1: ''
Arg0: '', Arg1: ''
PS C:\Source>
Что согласуется с тем, что я вижу при использовании Start-Process
в скрипте. Я провожу пару часов, гугляя, не найдя ответа. Есть мысли?
Я работаю над Windows 10 для разработки, но моя цель - Windows Сервер. Я не знаю, что это должно иметь значение.