Скрипт Powershell не работает без «powershell.exe -File», а также не работает с «powershell.exe -File» - PullRequest
1 голос
/ 19 февраля 2020

У меня есть сценарий, который отлично работает при запуске из кода ISE или VS с параметрами, заданными в коде, как

 param(
      [string]$Param1 = "example",
      [string[]]$Param2 = @('arrayparam1','arrayparam2'),
      [string[]]$Param3 = @('arrayparam1','arrayparam2'),
      [switch]Param4 = $true
    )

Но всякий раз, когда я запускаю этот сценарий без параметров в коде, но с параметрами из консоли, например

.\Script -Param1 example -Param2 'arrayparam1','arrayparam2' -Param3 'arrayparam1','arrayparam2' -Param4

он запускается, но генерирует пустой CSV-файл (с параметром в коде это прекрасно работает). Итак, я запустил этот скрипт с «powershell.exe -File» (который сгенерировал хороший файл) следующим образом:

powershell.exe -File .\Script -Param1 example -Param2 'arrayparam1','arrayparam2' -Param3 'arrayparam1','arrayparam2' -Param4

Но проблема в том, что он принимает только первый элемент из массива. Если второй массив пуст, он передает второй элемент из первого массива во второй массив в качестве первого элемента (это поразило меня).

Моя цель - запустить этот сценарий со всеми параметрами из консоли без "-powershell.exe - Файл". Я пробовал различные ExecutionPolicy, и теперь я использую RemoteSigned. Я использую PowerShell, PowerShell ISE и VS код для проверки этого, но он всегда работает одинаково. Я пробовал передавать массивы как "1", "2", ('1', '2'), @ ("1", "2"), но это никогда не работает.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 21 февраля 2020

Спасибо @ mklement0, вы действительно помогли, потому что я начал более глубоко изучать свой код и обнаружил, что по какой-то причине передача массива pscustomobject какой-либо другой функции не работает без "powershell.exe -File", поэтому создание Это глобальная переменная решила проблему, и теперь скрипт работает хорошо, просто ". \ Filename.psi -param ex -param2 ex2, et c". Спасибо всем за помощь: D

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