none
invoke-command, parameter member kann nicht überprüft werden. RRS feed

  • 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.AddLocalGroupMemberCommand

      geht auch nicht

        Invoke-Command -Scriptblock {net localgroup "Remotedesktopbenutzer" /add "$PersNr"} -Computer "$Computer" 

    Die Gruppe existiert bereits.
        + CategoryInfo          : NotSpecified: (Die Gruppe existiert bereits.:String) [], RemoteException

    viele eigenartige Fehlermeldungen


    Chris


    • Bearbeitet -- Chris -- Mittwoch, 18. März 2020 09:23
    Mittwoch, 18. März 2020 09:19

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
    Mittwoch, 18. März 2020 09:55
  • 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
    Mittwoch, 18. März 2020 09:32
  • 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
    Mittwoch, 18. März 2020 10:54

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
    Mittwoch, 18. März 2020 09:32
  • 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
    Mittwoch, 18. März 2020 09:55
  • 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
    Mittwoch, 18. März 2020 10:54