如何使用远程PowerShell创build本地Windows用户帐户?

试图用powershel创build用户。这对本地机器很好。 但是如何使用远程PowerShell在远程机器上创build本地用户帐户?

脚本localwindows.ps1是

$comp = [adsi]'WinNT://machinename,computer'; $user = $comp.Create('User', 'account4'); $user.SetPassword('change,password.10'); $user.SetInfo(); 

我通过C#尝试了同样的事情:

  PSCredential credential = new PSCredential(userName, securePassword); WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "machinename", 5985, "/wsman", shellUri, credential); using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo)) { runspace.Open(); String file = "C:\\localwindows.ps1"; Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.AddScript(System.IO.File.ReadAllText(file)); pipeline.Commands.Add("Out-String"); // execute the script Collection<PSObject> results = pipeline.Invoke(); } 

这也适用于本地。但是对于远程计算机来说,它的抛出exception“create:Access is denied”。

我能够使用以下命令在远程计算机上创建本地用户帐户:

 Invoke-Command -ComputerName machineName -filepath c:\script.ps1 -credential $getcredential 

脚本是

 $comp = [adsi]'WinNT://localhost,computer'; $user = $comp.Create('User', 'account11'); $user.SetPassword('change,password.10'); $user.SetInfo(); $user 

使用ADSI WinNT提供程序 :

 $username = "foo" $password = "bar" $computer = "hostname" $prov = [adsi]"WinNT://$computer" $user = $prov.Create("User", $username) $user.SetPassword($password) $user.SetInfo() 

powershell脚本invoke-Command在远程计算机上执行任何powershell脚本。 你没有说你如何使用PowerShell来创建用户,但作为一个例子,你写:

 invoke-command -computername myserver {[ADSI]$server="WinNT://localhost";$HD=$server.Create("User","HD");$HD.SetPassword("H3lpD3>K");$HD.SetInfo()} 

您还可以使用-filepath参数远程执行本地PowerShell脚本:

 Invoke-Command -ComputerName MyRemoteserver -filepath c:\Scripts\DaScript.ps1 

要启用远程命令,您必须在远程计算机上启用winrm。 你可以通过运行来做到这一点

 winrm quickconfig 

在远程计算机上。

如果您有PowerShell脚本在服务器上本地创建本地用户帐户,那么只需使用PSExec在具有管理帐户的远程计算机上运行即可

Invoke-Command可以工作,但也可以使用Enter-PSSession -Computer在远程机器上本地提交命令。 以下内容将提示用户输入用户名,并将它们添加到本地管理员组,而不使用密码:

 $user = read-host 'What is the name of the local user you would like to add?' net user /add $user net localgroup Administrators /add $user 

我不知道这个问题是否仍然相关,但是我已经试过了,发现需要修正的问题。 当您创建目录条目对象时,使用下面的代码

 $objOu = New-Object System.DirectoryServices.DirectoryEntry("WinNT://$computer", $admin, $adminPass, "Secure") 

其余的是一样的。