У меня есть скрипт с параметрами. Чтобы облегчить отладку скрипта, я создаю небольшую функцию, которую я нашел в сети, чтобы перечислить все мои переменные. Для этого я начинаю с получения всех существующих переменных в верхней части скрипта, затем создаю функцию, которая сравнивает записанные переменные до и после получения параметровОбъявление параметров не работает, если что-то выше параметра
Проблема заключается в том, что я положил $AutomaticVariables
и функцию до param
Объявление PowerShell дает мне следующую ошибку для любого параметра, где я устанавливаю значение по умолчанию. Есть ли способ обхода этого & hellip; ошибка? Если это не ошибка, почему, черт возьми, это поведение. Я не вижу смысла.
Выражение присваивания недействительно. Ввод оператора присваивания должен быть объектом, который может принимать назначения, такие как переменная или свойство.
# Array and function to debug script variable content
$AutomaticVariables = Get-Variable
function check_variables {
Compare-Object (Get-Variable) $AutomaticVariables -Property Name -PassThru |
Where -Property Name -ne "AutomaticVariables"
}
param(
[String]$hostname,
[String]$jobdesc,
[String]$type = "standard",
[String]$repo,
[String]$ocred,
[String]$site,
[String]$cred = "SRC-$($site)-adm",
[String]$sitetype,
[String]$room,
[String]$chsite = "chub"
)
# TEST - Display variables
check_variables
Должен ли я сказать, что даже если Я ставлю простое объявление переменной так же глупо, как x = 1 до param, поведение остается прежним. Таким образом, это не связано с Get-Variable или с функцией. Все, что перед параметром, дает тот же результат. –
Это не ошибка, именно так разработан язык, чтобы облегчить жизнь тем, кто пишет парсер. –
Как обрабатывать переменные, которые я хочу задать перед параметрами? Я попытался добавить параметры Get-Variable Inside, но он содержит все остальные переменные параметра. Кажется, он не установлен в порядке. –