Я пытаюсь найти элегантный способ передачи параметров в скрипт powershell, где строка может содержать любое количество специальных символов, которые необходимо экранировать. Например, сложный пароль со специальными символами.
Я смотрел на параметр -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 с указанной выше строкой, но получил ошибку «Не удалось найти параметр, соответствующий имени параметра« encodedcommand »
Итак, это должен быть вызов напрямую powershell.exe.
Также попробовал следующее:
powershell.exe - кодированная команда LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA == - файл Base64ParamTest.ps1
Это запустило скрипт, но параметры не имели значения.
Это ведет себя так, как я ожидал, но не так, как я хотел бы надеяться. Есть ли способ фактически передать мои параметры как безопасно закодированные строки?