2017-12-22 3 views
1

Ich versuche, Benutzer auf Remote-Computer mit Powershell zu erstellen. Sobald das Konto erstellt wurde, möchte ich das in der lokalen Admin-Gruppe hinzufügen.Wie fügt man Benutzer zur lokalen Admin-Gruppe in Powershell hinzu?

Konto wird erstellt, aber es wird nicht in der Admin-Gruppe hinzugefügt. Unten ist der Code, den ich verwende.

cls 
    $username = "test_user" 
$password = "password" 
$computer1 = hostname 
    $users = $null 
    $computer = [ADSI]“WinNT://$computer1” 
    Try { 
     $users = $computer.psbase.children | select -expand name 
     if ($users -like $username) { 
     Write-Host "$username already exists" 
     } Else { 
     $user_obj = $computer.Create(“user”, “$username”) 
     $user_obj.SetPassword($password) 
     $user_obj.SetInfo() 

     $user_obj.Put(“description”, “$username”) 
     $user_obj.SetInfo() 
     $user_obj.psbase.invokeset(“AccountDisabled”, “False”) 
     $user_obj.SetInfo() 
     $users = $computer.psbase.children | select -expand name 
     if ($users -like $username) { 
      Write-Host "$username has been created on $($computer.name)" 

      $group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group") 
$group.add("WinNT://$env:localhost/$username,user") 


     } Else { 



      Write-Host "$username has not been created on $($computer.name)" 
     } 
     } 
    } Catch { 
     Write-Host "Error creating $username on $($computer.path): $($Error[0].Exception.Message)" 
    } 

Was mache ich falsch?

+0

diesen Fehler. Fehler beim Erstellen von fuj_windel auf WinNT: // mymachine: Ausnahme beim Aufruf von "add" mit "1" Argument (en): "Ein ungültiger Verzeichnispfad wurde übergeben – Ironic

+0

@BenH wird es remotly funktionieren. Es funktioniert lokal. Ihr zweiter Vorschlag funktionierte. Plz Antwort einfügen – Ironic

+0

Noch eine Sache, wenn Sie vorschlagen können .. Wie kann ich überprüfen, ob ein Dienstkonto vorhanden ist oder nicht? eine Idee? – Ironic

Antwort

1

$env:computername ist Ihr lokaler Computer. $env:localhost existiert nicht. $computer1 ist die Variable, die Sie für den Computer definiert haben, zu dem Sie den Benutzer hinzufügen.

$group = [ADSI]("WinNT://$computer1/administrators,group") 
$group.add("WinNT://$computer1/$username,user") 
1

Ich benutze diese

$computername = "computername" # place computername here for remote access 
$username = 'user' 
$password = '[email protected]' #password 
$desc = 'Local admin account' 
$computer = [ADSI]"WinNT://$computername,computer" 
$user = $computer.Create("user", $username) 
$user.SetPassword($password) 
$user.Setinfo() 
$user.description = $desc 
$user.setinfo() 
$user.UserFlags = 65536 
$user.SetInfo() 
$group = [ADSI]("WinNT://$computername/administrators,group") 
$group.add("WinNT://$username,user") 
+0

Ihre Antwort ist richtig. abgestimmt. aber BenH hilft mir, es früher zu lösen. – Ironic

1

, dass eine ganze Menge Code ist, gerade dies zu tun.

Invoke-Command -ComputerName SomeRemoteComputerName -ScriptBlock { net user SomeNewUserName irgendein net localgroup Administratoren SomeNewUserName/add }

Yeppers, ich weiß, es ist nicht alles rein Posh. Sicher, Sie können dies mit mehr Code in PoSH (viel mehr in) tun, aber manchmal müssen Sie nur etwas erledigen.

Aber vs dies von Grund auf (gut, es sei denn, Sie versuchen gerade, Sachen zu lernen). Es gibt eine ganze Reihe vorgefertigter Skripte und Module, die Sie nutzen können. Siehe:

'gallery.technet.microsoft.com/scriptcenter/site/search?f%5B0%5D.Type=RootCategory & f% 5B0% 5D.Value = Localaccount'

Natürlich, wenn alle Maschinen waren auf PoSH v5 +, dann verwenden Sie einfach die integrierten Cmdlets für die lokale Benutzer-/Gruppenverwaltung.

'docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/?view=powershell-5.1'

Was die andere Frage: ‚Check-Dienstkonto vorhanden ist oder nicht '

Angenommen, Sie fragen, ob dies für einen Remote-Computer ist, dann ist es der gleiche Ansatz.

Invoke-Command -ComputerName SomeRemoteComputerName -ScriptBlock { Get-Service -Name SomeServiceName Get-Service -DisplayName SomeServiceDisplayName }

Verwandte Themen