Ich schreibe einfach ein paar grundlegende Skripte, nachdem ich PowerShell zu lange ausgelassen habe, und ich stehe hier irgendwie fest. Der Versuch, mehrere Parameter zu einem einzigen „Argument“ in einer Funktion, aber es wird immer nur geben den ersten Wert in der Zeichenfolge
#--------------------------------
# Returns logged on user of machine(s) given in parameter
#--------------------------------
function Get-UserLogged{
param($computerName)
foreach ($computer in $computerName) {
return (query user /server:$computerName)
}
}
Nun, wenn ich die Funktion aufrufen und führen zum Beispiel ...
Get-UserLogged Server01 Server02 Server03
passieren
es wird nur das Rück den Ausgangs für Server 1, so scheint es, dass der foreach funktioniert nicht wie erwartet
Verschiedene Skript gleiches Problem:
function p{
param($computerName)
foreach ($computer in $computerName) {
return (test-connection $computer -Count 1)
}
}
wenn ich laufen:
p localhost, google.com, bbc.com
es versucht, nur localhost
Welche sind diese? Server01 Server02 Server03 –
Was auch immer der Standardwert ist, habe ich versucht, den Parameter als eine Zeichenfolge und ein Array, aber das gleiche Ergebnis – craigread7
Sie sollten die return-Anweisung nicht verwenden. Mit Return wird PowerShell angewiesen, die aktuelle Funktion/das aktuelle Skript zu beenden. Wenn Sie stattdessen mehrere Werte zurückgeben möchten, rufen Sie einfach den Befehl auf, der diese Werte generiert (z. B. entfernen Sie in den obigen Beispielen die return-Anweisung und die runden Klammern). In Ihrem ersten Beispiel verwendet der Befehl in Ihrer foreach-Anweisung außerdem $ computerName (die Sammlung, die übergeben wird) und nicht nur $ computer (das Element, das Sie gerade in der aktuellen Iteration der foreach-Schleife verarbeiten). Ändere diese zwei Dinge und du solltest in viel besserer Form sein. –