Я пытаюсь найти элегантный способ передачи параметров сценарию powershell, где строка может содержать любое количество специальных символов, которые необходимо будет экранировать. Например, сложный пароль со специальными символами.Использование Powershell -encodedcommand для передачи параметров
Я смотрел опцию -encodedcommand, но похоже, что это только предназначено для передачи закодированного сценария, а не кодированной версии параметров.
Например, рассмотрим следующий сценарий:
param(
[Parameter()][Alias("un")][string]$Username,
[Parameter()][Alias("pw")][string]$Password
)
Write-Host "Username: $Username"
Write-Host "Password: $Password"
Строка '-un TestUser -pw testpw' закодирована base64 как следующее: LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA ==
Я попытался назвать скрипт как файл .ps1 и передающий -кодированный код с указанной выше строкой, но получивший ошибку «Параметр не может быть найден, который соответствует имени параметра« encodedcommand »
Итак, это хорошо, для прямого вызова powershell.exe.
попытался также следующее: powershell.exe -encodedcommand LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA == -file Base64ParamTest.ps1
Это запускал скрипт, но параметры не имели никакого значения.
Это ведет себя так, как я ожидал, но не так, как я надеюсь. Есть ли способ передать мои параметры сами по себе как безопасно закодированные строки?
My Plan B здесь просто Base64 кодирует значение пароля сам по себе, а не всю строку параметров, а затем декодирует это в скрипте. Достаточно просто, но мне было интересно, не хватает ли мне более простого способа сделать это автоматически. – Eric