Jump to content

Remove-LocalGroupMember


Direkt zur Lösung Gelöst von MurdocX,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

vor 18 Minuten schrieb Kuddel071089:

cls
Remove-LocalGroupMember -Group Administratoren -Member "Server-Installation"

 

Mich irritiert das Bei der Fehlermeldung steht "Remove-LocalGroupMember -Group Administratoren -Member "S-HHLA-Server ..."  oben aber "Server-Installation".

Übersehe ich hier was oder willst du den Befehl im kompletten nicht posten? :hmmm:

 

 

EDIT - Anhang

Am 10.2.2020 um 13:25 schrieb Kuddel071089:
 

Ausnahme beim Aufrufen von "Remove" mit 1 Argument(en):  "Die Struktur der Sicherheitskennung ist unzulässig.
"
In C:\Program Files (x86)\WindowsPowerShell\Modules\localaccount\1.6\localaccount.psm1:590 Zeichen:35
+          $group.remove("WinNT://$($Name[0]),user")
+                                   ~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

 

 

Die Fehlermeldung ist prinzipiell richtig, denn du übergibst nur das Objekt als String. Ich hab hier mal ein Beispiel. Dieses Beispiel erzeugt das Objekt "LocalPrincipal" für den Benutzer "Setup". Genau das was dein "Remove-LocalGroupMember" Cmdlet unter "Member" benötigt.

 

PS C:\Users\ICH> $User = Get-LocalGroupMember -Group Administratoren -Member Setup
PS C:\Users\ICH> $User.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    LocalPrincipal                           System.Object
PS C:\Users\ICH> Remove-LocalGroupMember -Group Administratoren -Member $User

 

EDIT 2

 

In den Beispielen von Microsoft ist zu erkennen, dass für Domänen Gruppen, also solche die im AD erstellt werden der Domänenkürzel vor den Gruppennamen gestellt werden muss. Hier also z.B.: 

Remove-LocalGroupMember -Group Administratoren -Member "MeineDomäne\Server-Installation"

Vermutlich kann er dann deinen String in das Objekt parsen.

bearbeitet von MurdocX
Link zu diesem Kommentar

@MurdocX hatte den Gruppennamen noch geändert. Daher passte das nicht.

 

Ich habe jetzt mal die Hilfe geöffnet:

 


NAME
    Remove-LocalGroupMember
    
ÜBERSICHT
    Remove a local user to a local group in the Targeted computername
    
    
SYNTAX
    Remove-LocalGroupMember [-GroupName] <String[]> [[-Computername] <String[]>] [-name] <String[]> [-WhatIf] [-Confirm] [<CommonParameters>]
    
    
BESCHREIBUNG
    Remove a local user to a local group in the Targeted computername
    

VERWANDTE LINKS

HINWEISE
    Zum Aufrufen der Beispiele geben Sie Folgendes ein: "get-help Remove-LocalGroupMember -examples".
    Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help Remove-LocalGroupMember -detailed".
    Technische Informationen erhalten Sie mit folgendem Befehl: "get-help Remove-LocalGroupMember -full".

 

Link zu diesem Kommentar

Hmmm ... sieht bei mir ein bissl anders aus ...

NAME
    Remove-LocalGroupMember
    
SYNTAX
    Remove-LocalGroupMember [-Group] <LocalGroup> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    
    Remove-LocalGroupMember [-Name] <string> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    
    Remove-LocalGroupMember [-SID] <SecurityIdentifier> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    

ALIASE
    rlgm
    

HINWEISE
    Die Hilfedateien für dieses Cmdlet können von "Get-Help" auf diesem Computer nicht gefunden werden. Es wird nur ein Teil der Hilfe angezeigt.
        -- Sie können die Hilfedateien für das Modul, das dieses Cmdlet enthält, herunterladen und installieren, indem Sie "Update-Help" verwenden.
        -- Wenn Sie das Hilfethema für dieses Cmdlet online anzeigen möchten, geben Sie Folgendes ein: "Get-Help Remove-LocalGroupMember -Online", oder 
           gehen Sie zu "http://go.microsoft.com/fwlink/?LinkId=717989".

... ist in meinem Fall ein deutscher Windows Server 2016 Standard.

 

Die Online-Hilfe sieht auch anders aus als bei Dir ... Remove-LocalGroupMember.   ... sehr verdächtig ... :hmmm::shock2:

 

Kann es sein, dass auf Deinem Server eine entsprechende Function nachinstalliert wurde, die die eingebaute quasi ersetzt?

bearbeitet von BOfH_666
Link zu diesem Kommentar
vor 5 Minuten schrieb BOfH_666:

Hmmm ... sieht bei mir ein bissl anders aus ...


NAME
    Remove-LocalGroupMember
    
SYNTAX
    Remove-LocalGroupMember [-Group] <LocalGroup> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    
    Remove-LocalGroupMember [-Name] <string> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    
    Remove-LocalGroupMember [-SID] <SecurityIdentifier> [-Member] <LocalPrincipal[]>  [<CommonParameters>]
    

ALIASE
    rlgm
    

HINWEISE
    Die Hilfedateien für dieses Cmdlet können von "Get-Help" auf diesem Computer nicht gefunden werden. Es wird nur ein Teil der Hilfe angezeigt.
        -- Sie können die Hilfedateien für das Modul, das dieses Cmdlet enthält, herunterladen und installieren, indem Sie "Update-Help" verwenden.
        -- Wenn Sie das Hilfethema für dieses Cmdlet online anzeigen möchten, geben Sie Folgendes ein: "Get-Help Remove-LocalGroupMember -Online", oder 
           gehen Sie zu "http://go.microsoft.com/fwlink/?LinkId=717989".

... ist in meinem Fall ein deutscher Windows Server 2016 Standard.

 

Die Online-Hilfe sieht auch anders aus als bei Dir ... Remove-LocalGroupMember.   ... sehr verdächtig ... :hmmm::shock2:

 

Kann es sein, dass auf Deinem Server eine entsprechende Function nachinstalliert wurde, die die eingebaute quasi ersetzt?

Kann gut sein, dass ich da mal bisschen was rumgebastelt habe.

 

Ist das ein extra Modul, dass ich evtl neu installieren kann ?

Link zu diesem Kommentar
  • Beste Lösung
vor 8 Minuten schrieb Kuddel071089:

Ist das ein extra Modul, dass ich evtl neu installieren kann ?

Nein. Deine Modul-Hilfe ist nur nicht auf dem aktuellen Stand. Das soll jetzt hier nicht das Thema werden. Die Online-Doku von MS ist im Zweifel immer die Aktuelle.

 

Hast du Dir meine Lösung angesehen?

 

EDIT

 

Kann es sein, dass du das Modul "localaccounts" installiert hast? Die Fehlermeldung bezieht sich auf das Modul. Das gibt es in der PSGallery. Du solltest den hauseigenen Befehl von dem Modul "Microsoft.PowerShell.LocalAccounts" verwenden.

 

PS C:\Users\...> Find-Command -Name Remove-LocalGroupMember

Name                                Version    ModuleName                          Repository
----                                -------    ----------                          ----------
Remove-LocalGroupMember             1.6        localaccount                        PSGallery
Remove-LocalGroupMember             2016.5.7.2 ARTools                             PSGallery
Remove-LocalGroupMember             1.3        LocalMachine                        PSGallery

Lösche das mal: "C:\Program Files (x86)\WindowsPowerShell\Modules\localaccount"

bearbeitet von MurdocX
Link zu diesem Kommentar
vor 8 Stunden schrieb daabm:

Hm - hab ich nicht oben schon was von "nachgebaut" geschrieben? Das ist das "Schöne" an Powershell - ein Cmdlet muß nicht das sein, für das man es hält :-)

Mich würde mal ganz schnell


get-command remove-localgroupmember | fl *

der Beteiligten interessieren. Da kommen bestimmt interessante Unterschiede zum Vorschein.

Bei mir sieht es so aus:

 

Get-Command Remove-LocalGroupMember | FL *


HelpUri             : 
ScriptBlock         : 
                          [CmdletBinding(SupportsShouldProcess=$true)]
                          [Alias()]
                          [OutputType([int])]
                          Param
                          (
                              [Parameter(Mandatory=$true,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=0)]
                              [string[]]$GroupName,
                              
                              [Parameter(Mandatory=$false,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=1)]
                              [string[]]$Computername = "$Env:computername",
                      
                              [Parameter(Mandatory=$true,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=2)]
                              [string[]]$name
                      
                              
                          )
                      
                          Begin
                          {
                          }
                          Process
                          {
                          if ($PSCmdlet.Shouldprocess("$($Name[0]) Removed from $($groupname[0]) on $computername") )
                               {
                               $group = [ADSI]"WinNT://$($computername[0])/$($groupname[0]),group" 
                               $group.remove("WinNT://$($Name[0]),user")
                               }
                          }
                          End
                          {
                          }
                      
CmdletBinding       : True
DefaultParameterSet : 
Definition          : 
                          [CmdletBinding(SupportsShouldProcess=$true)]
                          [Alias()]
                          [OutputType([int])]
                          Param
                          (
                              [Parameter(Mandatory=$true,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=0)]
                              [string[]]$GroupName,
                              
                              [Parameter(Mandatory=$false,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=1)]
                              [string[]]$Computername = "$Env:computername",
                      
                              [Parameter(Mandatory=$true,
                                         ValueFromPipelineByPropertyName=$true,
                                         Position=2)]
                              [string[]]$name
                      
                              
                          )
                      
                          Begin
                          {
                          }
                          Process
                          {
                          if ($PSCmdlet.Shouldprocess("$($Name[0]) Removed from $($groupname[0]) on $computername") )
                               {
                               $group = [ADSI]"WinNT://$($computername[0])/$($groupname[0]),group" 
                               $group.remove("WinNT://$($Name[0]),user")
                               }
                          }
                          End
                          {
                          }
                      
Options             : None
Description         : 
Verb                : Remove
Noun                : LocalGroupMember
HelpFile            : 
OutputType          : {System.Int32}
Name                : Remove-LocalGroupMember
CommandType         : Function
Source              : localaccount
Version             : 1.6
Visibility          : Public
ModuleName          : localaccount
Module              : localaccount
RemotingCapability  : SupportedByCommand
Parameters          : {[GroupName, System.Management.Automation.ParameterMetadata], [Computername, System.Management.Automation.ParameterMetadata], [name, 
                      System.Management.Automation.ParameterMetadata], [Verbose, System.Management.Automation.ParameterMetadata]...}
ParameterSets       : {[-GroupName] <string[]> [[-Computername] <string[]>] [-name] <string[]> [-WhatIf] [-Confirm] [<CommonParameters>]}

 

Link zu diesem Kommentar
vor 54 Minuten schrieb Kuddel071089:

Ich habe meinen Server gerade noch einmal überprüft: ein Modul war nicht installiert.

Ausnahme beim Aufrufen von "Remove" mit 1 Argument(en):  "Die Struktur der Sicherheitskennung ist unzulässig.
"
In C:\Program Files (x86)\WindowsPowerShell\Modules\localaccount\1.6\localaccount.psm1:590 Zeichen:35
+          $group.remove("WinNT://$($Name[0]),user")
+                                   ~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Die Aussage passt nicht ganz zu deiner Fehlermeldung ;-)  Wie schon oben erwähnt, ist das Modul auf jedem PC mit Powershell 5.1 schon vorhanden. Da muss kein Modul für installiert werden und braucht es auch für eine gute Funktionalität nicht.

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...