У меня есть функция с условными операторами, основанными на существовании созданного свойства переменной, а не на том, что это за переменная.
Какими способами можно безопасно гарантировать, что для каждой итерации блока процесса именованной функции переменные отбрасываются. Чтобы каждый проход объекта через блок процесса мог каждый раз создавать переменные.
Function TestFunction {
param (
[Parameter(ValueFromPipeline = $true)]$PipelineValue
)
Process {
#PipelineValue may or may not have a property 1 or a property 2
#depending on Computerlocation so the variable the must be discarded
#each pass, or an upcoming object that passes through will eventually
#evaluate true for both conditional statements.
$Selection = Switch ($PipelineValue.ComputerLocation) {
"Moon" {[PsCustomObject]@{Property1 = "Moon_$($Pipelinevalue)."}}
"Earth" {[PsCustomObject]@{Property2 = "Earth_$($Pipelinevalue)."}}
}
if ($Selection.property1){
"Do This"
}
if ($Selection.property2){
"Do That"
}
}
Я думаю, что Remove-Variable будет работать, но, может быть, безопаснее вложить внутренности блока процесса в неназванную функцию? Лучше полагаться на то, как работает свойство функций в powershell, или быть более явным?
Это упрощенный пример.