micneu
Goto Top

Windows 7,8 locale benutzer einer gruppe hinzufügen per powershell

Moin,

bei uns im büro haben wir leider keine Domäne.
Wir haben Windows 7 Pro und Windows 8.1 Enterprise.
Nun möchte ich per Powershell die Benutzer anlegen (das bekomme ich auch hin)
und einer bestehenden Gruppe hinzufügen.

$ErrorActionPreference = 'Continue'  
#$ErrorActionPreference = "SilentlyContinue" 
$pcname = 'localhost'  
$computer = [ADSI]"WinNT://$pcname,computer"  
$user = $computer.psbase.children.Find("lisa", "User")  
#$test1 = $user | fl *
if ($?) {
    'der user ist vorhanden'  
    [ADSI]$group="WinNT://localhost/Benutzer,Group"  
    #$group="WinNT://localhost/Benutzer,Group" 
    $group.Add($user.path)
    $group.SetInfo()
} else {
    'der user wird angelegt'  
    $user = $computer.Create("user", "HansWurst")  
    $user.SetPassword("test")  
    $user.SetInfo()
    $user.Fullname = "Hans Wurst mit name"  
    $user.SetInfo()
    $user.Description = "Mit Powershell angelegt"  
    $user.SetInfo()
    $flag=$user.UserFlags.value -bor 0x10000
    $user.put("userflags",$flag)  
    $user.SetInfo()
    $user.path
    [ADSI]$group="WinNT://localhost/Benutzer,Group"  
    #$group="WinNT://localhost/Benutzer,Group" 
    $group.Add($user.path)
    $group.SetInfo()
}

und hier die Fehlermeldung:

Ausnahme beim Aufrufen von "Add" mit 1 Argument(en): "Ein Mitglied konnte in der lokalen Gruppe nicht hinzugefügt oder
entfernt werden, da das Mitglied nicht vorhanden ist.
"
In C:\Users\michael\Documents\script\PowerShell\testuseradd.ps1:11 Zeichen:5

back-to-top$group.Add($user.path)

back-to-top~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (face-smile , MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI


hat von euch jemand eine idee wie ich es lösen kann.

Gruß Michael

Content-ID: 247772

Url: https://administrator.de/contentid/247772

Ausgedruckt am: 23.11.2024 um 10:11 Uhr

ITvortex
Lösung ITvortex 29.08.2014 aktualisiert um 10:32:12 Uhr
Goto Top
hi,

    $user.path 
    [ADSI]$group="WinNT://localhost/Benutzer,Group"   

Was soll den hier mit deinem $user.path passieren wenn du der Variable keinen Wert zuweist?

Gruß
micneu
micneu 29.08.2014 aktualisiert um 10:34:59 Uhr
Goto Top
Moin,

in der variable ist ein wert drin, die ist nicht leer:

PS C:\Windows\system32> $user.path
WinNT://WORKGROUP/localhost/lisa

hast du das script mal bei dir laufen lassen, dann wirst du sehen das dort was drin ist.
colinardo
Lösung colinardo 29.08.2014 aktualisiert um 11:35:16 Uhr
Goto Top
Moin,
schreibe Zeile 28 so:
$group.add('WinNT://' + $user.Name)
und die zig SetInfo() werden nicht benötigt, hier reicht es diesen Befehl einmal nach dem Setzen der Informationen abzuschicken. Und das $group.SetInfo() in Zeile 29 ist ebenfalls überflüssig.

Grüße Uwe
micneu
micneu 29.08.2014 um 11:35:20 Uhr
Goto Top
Moin,

Super das war die Lösung.

$ErrorActionPreference = 'Continue'  
#$ErrorActionPreference = "SilentlyContinue" 
$pcname = 'localhost'  
$computer = [ADSI]"WinNT://$pcname,computer"  
$user = $computer.psbase.children.Find("HansWurst", "User")  
#$test1 = $user | fl *
if ($?) {
    'der user ist vorhanden'  
    [ADSI]$group="WinNT://localhost/Benutzer,Group"          
    $group.add('WinNT://' + $user.Name)  
} else {
    'der user wird angelegt'  
    $user = $computer.Create("user", "HansWurst")  
    $user.SetPassword("test")  
    $user.SetInfo()
    $user.Fullname = "Hans Wurst mit name"      
    $user.Description = "Mit Powershell angelegt"  
    $flag=$user.UserFlags.value -bor 0x10000
    $user.put("userflags",$flag)      
    [ADSI]$group="WinNT://localhost/Benutzer,Group"  
    #$group="WinNT://localhost/Benutzer,Group" 
    #$group.Add($user.path)
    $group.add('WinNT://' + $user.Name)  
    $user.SetInfo()
}

Das $user.SetInfo() in Zeile 15 wird Benötigt, sonst bekomme ich immer eine Fehlermeldung und es wird der Zeile 16 nicht angewendet.

Danke nochmal und es ist gelöst.