В качестве опции вы можете использовать $PSBoundParameters
collection, чтобы проверить, передан ли метод.
Предположим, у нас есть файл json, подобный следующему { "p1": "value1", "p2": "value2" }
, и мы хотим создать функцию, которая принимает параметры p1
и p2
и обновляет значения p1
и p2
в файле, если перешел в функцию. Допустим, эти значения могут быть null
, и наличие этих значений в качестве нуля не эквивалентно тому, что они не были переданы.
Например, Update-Values -p1 $null
должен обновить p1
до null
и не должен меняться p2
.
Для этого мы должны быть в состоянии определить, передан ли параметр методу или нет.
Пример - Как определить, передан ли параметр, для необязательного параметра, который может принимать значение NULL в качестве значения?
Function Update-Values ($p1, $p2) {
If($PSBoundParameters.ContainsKey("p1")) {
Write-Host "p1 passed"
}
else {
Write-Host "p1 not passed"
}
If($PSBoundParameters.ContainsKey("p2")) {
Write-Host "p2 passed"
}
else {
Write-Host "p2 not passed"
}
}
Тогда, если вы запустите функцию, используя следующий параметр:
Update-Values -p1 $null
# Update-Values -p1 "something"
В результате вы увидите:
p1 passed
p2 not passed
Вы можете прочитать сообщение в блоге здесь: Как определить, передается ли параметр командлету Powershell .