Benutzer mit den meisten Antworten
invoke-command, parameter member kann nicht überprüft werden.

Frage
-
Invoke-Command -ComputerName $Computer -Scriptblock {Add-LocalGroupMember -Group "Remotedesktopbenutzer" -member $PersNr}
beide Variable sind ganz normal befüllt?
Das Argument für den Parameter "Member" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie den Befehl
erneut aus.
+ CategoryInfo : InvalidData: (:) [Add-LocalGroupMember], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.AddLocalGroupMemberCommand
+ PSComputerName : pc100
Ausnahme beim Aufrufen von "Add" mit 1 Argument(en): "Der angegebene Kontoname ist bereits Mitglied der Gruppe.
Invoke-Command -ComputerName $Computer -Scriptblock {Add-LocalGroupMember -Group "Remotedesktopbenutzer" -member "$PersNr"}
Das Mitglied VORDEFINIERT\ wurde in der Gruppe Remotedesktopbenutzer nicht gefunden.
+ CategoryInfo : ObjectNotFound: (VORDEFINIERT\:String) [Add-LocalGroupMember], MemberNotFoundException
+ FullyQualifiedErrorId : MemberNotFound,Microsoft.PowerShell.Commands.AddLocalGroupMemberCommandgeht auch nicht
Invoke-Command -Scriptblock {net localgroup "Remotedesktopbenutzer" /add "$PersNr"} -Computer "$Computer"
Die Gruppe existiert bereits.
+ CategoryInfo : NotSpecified: (Die Gruppe existiert bereits.:String) [], RemoteExceptionviele eigenartige Fehlermeldungen
Chris
- Bearbeitet -- Chris -- Mittwoch, 18. März 2020 09:23
Antworten
-
Ein Scriptblock weiß nix von den Variablen, die es ausserhalb gibt. Deshalb musst Du ihm diese in einer speziellen Art mitteilen. Eine Art ist, den Scope-Modifier USING zu benutzen ... so hier:
Invoke-Command -ComputerName $Computer -Scriptblock {Add-LocalGroupMember -Group "Remotedesktopbenutzer" -member $USING:PersNr}
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51
-
Parameter müssen an den Scriptblock explizit übergeben werden. Ein Zugriff auf globale Variablen nicht möglich, daher ist deine Variable eben leer:
https://stackoverflow.com/questions/16347214/pass-arguments-to-a-scriptblock-in-powershell
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51
-
Im Sinne von Programmlogik (Scriptblock ist eine implizite Funktion), ist die Anwendung von PARM() strukturierter (meine persönliche Meinung).
https://learn-powershell.net/2014/10/11/using-a-scriptblock-parameter-with-a-powershell-function/
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51
Alle Antworten
-
Parameter müssen an den Scriptblock explizit übergeben werden. Ein Zugriff auf globale Variablen nicht möglich, daher ist deine Variable eben leer:
https://stackoverflow.com/questions/16347214/pass-arguments-to-a-scriptblock-in-powershell
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51
-
Ein Scriptblock weiß nix von den Variablen, die es ausserhalb gibt. Deshalb musst Du ihm diese in einer speziellen Art mitteilen. Eine Art ist, den Scope-Modifier USING zu benutzen ... so hier:
Invoke-Command -ComputerName $Computer -Scriptblock {Add-LocalGroupMember -Group "Remotedesktopbenutzer" -member $USING:PersNr}
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51
-
Im Sinne von Programmlogik (Scriptblock ist eine implizite Funktion), ist die Anwendung von PARM() strukturierter (meine persönliche Meinung).
https://learn-powershell.net/2014/10/11/using-a-scriptblock-parameter-with-a-powershell-function/
- Als Antwort markiert -- Chris -- Mittwoch, 18. März 2020 12:51