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

时间:2013-11-25 07:15:37

标签: windows powershell powershell-remoting

尝试使用powershel创建用户。这适用于本地计算机。但是如何使用远程PowerShell在远程计算机中创建本地用户帐户?

脚本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();
              }  

这也适用于本地。但对于远程计算机,它抛出异常“创建:访问被拒绝”。

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

使用ADSI WinNT provider

$username = "foo"
$password = "bar"
$computer = "hostname"

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

答案 2 :(得分:0)

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

在远程计算机上。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

Invoke-Command可以工作,但您也可以使用Enter-PSSession -Computer在远程计算机上本地提交命令。 以下将提示用户输入用户名并将其添加到本地Administrators组,没有密码:

$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

答案 5 :(得分:0)

我不知道问题是否仍然相关,但我已经尝试过这个问题并找到了需要解决的问题。创建目录条目对象时,请使用以下代码

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

其余的都一样。