2017-04-07 13 views
1

を追加します。リモートのWindows Server上でローカルユーザを作成し、私は、リモートのWindows Server上でユーザーを作成し、管理者グループに追加するには、PowerShellスクリプトを作成した管理者グループに

$Computer = Read-Host "Computer name:" 
$UserName = Read-Host "User name:" 
$Password = Read-Host "Password" -AsSecureString 
$AdminGroup = [ADSI]"WinNT://$Computer/Administrator,group" 
$User = [ADSI]"WinNT://$Computer/$UserName,user" 
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, (ConvertTo-SecureString $Password -AsPlainText –Force) 
$User.SetPassword($Cred.GetNetworkCredential().Password) 
$AdminGroup.Add($User.Path) 

をし、それがエラーの下に私を与える:

 
The following exception occurred while retrieving member "SetPassword":    " 
The user name could not be found. 
At C:\test1.ps1:7 char:18 
+ $User.SetPassword <<<< ($Cred.GetNetworkCredential().Password) 
    + CategoryInfo   : NotSpecified: (:) [], ExtendedTypeSystemException 
    + FullyQualifiedErrorId : CatchFromBaseGetMember 

The following exception occurred while retrieving member "Add": "The specified 
local group does not exist. 
At C:\test1.ps1:8 char:16 
+ $AdminGroup.Add <<<< ($User.Path) 
    + CategoryInfo   : NotSpecified: (:) [], ExtendedTypeSystemException 
    + FullyQualifiedErrorId : CatchFromBaseGetMember 

答えて

3

実際にユーザーを作成する必要がある場合。

$User = [ADSI]"WinNT://$Computer/$UserName,user" 

おそらくローカルアカウントを作成する最も簡単な方法は、netコマンドです:あなたはそれが既に存在する場合にのみ返しますユーザーアカウントを使用しているの文

& net user $UserName ($Cred.GetNetworkCredential().Password) /expires:never /add 

WinNT providerを使用が可能であり、しかし、より複雑:

また
$acct = [adsi]"WinNT://$Computer" 
$user = $acct.Create('User', $UserName) 
$user.SetPassword($Cred.GetNetworkCredential().Password) 
$user.SetInfo() 

、他の人がすでに指摘したように、あなたが管理者グループの名前をスペルミス(その2番目のエラーの原因となっているもの)。そのグループの名前はローカライズできるので、実行している言語のバージョンによっては、それを解決することもできます。

$AdminGroupName = Get-WmiObject Win32_Group -Filter "LocalAccount=True AND SID='S-1-5-32-544'" | 
        Select-Object -Expand Name 
$AdminGroup = [adsi]"WinNT://$Computer/$AdminGroupName,group" 
+0

AdminGroupの名前が正しく取得されています。 –

+0

@Ansgar Wiechers - ありがとうたくさんのユーザーがリモートで動作しますが、上記の設定にもかかわらずAdministratorsグループに追加されません。 –

0

「管理者」に「s」がありません。

$AdminGroup = [ADSI]"WinNT://$Computer/Administrator,group" 

私は、ローカル管理者グループにユーザーを追加し、その行はこのようになります(作業)スクリプトがあります。

$AdminGroup = [ADSI]"WinNT://$ComputerName/Administrators,group" 
0

あなたは、実際にユーザーを作成したことはありませんが。また、管理者グループ名を修正する必要があります。私はあなたのコードを修正しました:

$Computer = Read-Host "Computer name:" 
$UserName = Read-Host "User name:" 
$Password = Read-Host "Password" -AsSecureString 
$AdminGroup = [ADSI]"WinNT://$Computer/Administrators,group" 
$CompObject = [ADSI]"WinNT://$Computer" 
$User = $CompObject.Create('User',$UserName) 
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, (ConvertTo-SecureString $Password -AsPlainText –Force) 
$User.SetPassword($Cred.GetNetworkCredential().Password) 
$User.SetInfo() 
$AdminGroup.Add($User.Path) 
関連する問題