Jump to content

Recommended Posts

vor 1 Minute schrieb MurdocX:

Der Fehler zeigt leider nicht deinen Befehl. Könntest du diesen hier im kompletten zur Analyse posten? Ich glaube sonst kommen wir nicht weiter.

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

 

Share this post


Link to post
Share on other sites
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.

Edited by MurdocX

Share this post


Link to post
Share on other sites

@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".

 

Share this post


Link to post
Share on other sites

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?

Edited by BOfH_666

Share this post


Link to post
Share on other sites
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 ?

Share this post


Link to post
Share on other sites
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"

Edited by MurdocX

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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>]}

 

Share this post


Link to post
Share on other sites
vor 4 Minuten schrieb MurdocX:

Wie ist denn der aktuelle Stand?

Was wurde von den Vorschlägen umgesetzt?

Komme erst morgen wieder dazu, mich wieder mit dem Thema zu beschäftigen

Share this post


Link to post
Share on other sites
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.

 

Share this post


Link to post
Share on other sites

Okay, wer lesen kann, ist klar im Vorteil.


In der Fehlermeldung steht ja drin, wo das Modul liegt.

 

"In C:\Program Files (x86)\WindowsPowerShell\Modules\localaccount\1.6\"

 

Ich habe es jetzt gelöscht.

 

Und siehe da, es funktioniert.

 

 

Vielen Dank an alle für die Hilfe :-)

 

Share this post


Link to post
Share on other sites
Am 11.2.2020 um 22:29 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

Du hast die Lunte schon vorher gerochen :D

Share this post


Link to post
Share on other sites
Am 14.2.2020 um 08:54 schrieb Kuddel071089:

Und siehe da, es funktioniert.

Vielen Dank an alle für die Hilfe :-)

Es wäre super, wenn du den Thread noch als "Gelöst" bzw. die "beste Antwort" markieren könntest, dann haben andere auch noch was davon :-)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...