Ein alternativer Ansatz zu denen unter der Voraussetzung. Mehr Code, wohl Overkill, aber ich denke, es ist gut, die PowerShell-Funktion param in den Griff zu bekommen.
# PowerShell's native argument/parameter support
param(
[string]$name
)
# Create an array with Name and Age properties as hashtable.
$people = @(
@{ Name = "Tom" ; Age = 29},
@{ Name = "Andrew" ; Age = 99},
@{ Name = "Bill" ; Age = 5}
)
# Find the person by comparing the argument to what is in your array
$person = $people | Where-Object {$_.Name -eq $name}
# Single name version: If the person is found, print what you would like. Otherwise let the user know name not found
if($person -ne $null){
Write-Host "$($person.Name) is $($person.Age) years old"
}else{
Write-Host "$name not found in list."
}
<# Multiple name version : get rid of the param section
foreach ($name in $args){
$person = $people | Where-Object {$_.Name -eq $name}
if($person -ne $null){
Write-Host "$($person.Name) is $($person.Age) years old"
}else{
Write-Host "$name not found in list."
}
}
#>
ist args $ spezifisch von Wert Aufnehmen. \ Name.ps1 „tom“ – Rustle
'$ args' ein besonderer Wert für die Parameter ist das Skript/Funktion mit aufgerufen. Wenn Sie es wie folgt benennen: '. \ Name.ps1" tom "', '$ args' enthält' "tom" '. Wenn Sie es mit mehreren Werten aufrufen. '. \ Name.ps1" tom "" jerry "', '$ args' enthält ein Array mit' "tom" 'und' "jerry" ' –