2017-04-07 1 views
1
나는 원격 Windows 서버에서 사용자를 만들고 관리자 그룹에 추가 PowerShell 스크립트 만들었습니다

:원격 Windows 서버에 로컬 사용자 만들기 및 관리자 그룹에 추가를

$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

사용자를 만들려면 실제로 사용자를 만들어야합니다. 당신이 반환에게이 이미 존재하는 경우에만 사용자 계정을 사용중인 문 :

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

WinNT provider 사용이 가능 : 로컬 계정을 만들 아마

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

가장 간단한 방법은 net 명령입니다 하지만 더 복잡 : 다른 사람이 이미 지적으로

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

또한, 당신은 관리자 그룹의 이름 (즉, 맞춤법이 틀린 두 번째 오류의 원인은 무엇입니까?) 해당 그룹의 이름을 현지화 할 수 있으므로 실행중인 언어 버전에 따라 다음과 같이 처리하십시오.

$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 - 고마워요. 사용자가 원격 작업에 추가했지만 위의 설정에도 불구하고 관리자 그룹에 추가되지 않습니다. –

0

아래 "관리자"의 "s"가 누락 된 것 같습니다.

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

나는 로컬 관리자 그룹에 사용자를 추가하는 (작업) 스크립트가 그 라인은 다음과 같습니다

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

당신은 실제로 만든 적이 사용자. 또한 관리자 그룹 이름을 정정하려고합니다. 코드를 수정했습니다 :

관련 문제