2013-11-25 121 views
2

尝试使用powershel创建用户。对于本地计算机,此工作正常。但是,如何使用远程PowerShell在远程计算机上创建本地用户帐户?如何使用远程PowerShell创建本地Windows用户帐户?

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

这也适用于本地罚款。但对于远程计算机及其引发异常“创建:访问是否认“。

+0

你可以在这种情况下添加PowerShell脚本 – Chelseawillrecover

+0

我已经使用powershell脚本编辑了内容。 –

+0

http://gallery.technet.microsoft.com/scriptcenter/Add-new-local-administrator-3a962c5e – JohnLBevan

回答

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 
0

使用ADSI WinNT provider

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

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

我用上面的方法连接到localhost.But而试图在远程机器上创建它时抛出异常: '使用“0”参数调用“setinfo”的异常:“访问被拒绝。 “ 在行:1字符:12 + $ HD.setinfo <<<<() + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:CatchFromBaseAdapterMethodInvokeTI” –

+0

确保您的帐户被授权远程访问该主机,远程管理已启用('winrm qc'),并且远程主机上的Windows防火墙允许访问。 –

+0

如何传递在远程主机中具有权限的帐户的凭证? –

0

PowerShell脚本调用命令在远程计算机上执行任何PowerShell脚本。你不只是说你如何使用PowerShell来创建用户,但作为一个例子,你写:

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

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

您还可以通过远程使用-FilePath参数,执行当地的PowerShell脚本

要启用远程命令,您必须在远程计算机上启用winrm。您可以通过运行

winrm quickconfig 

在远程计算机上执行此操作。

+0

我尝试了以下方式[ADSI] $ server =“WinNT:// localhost” $ HelpDesk = $ server.Cr eate( “用户”, “帮助台”) $ HelpDesk.SetPassword( “H3lpD3> K”) $ HelpDesk.SetInfo() –

+0

我试图以下列方式: [ADSI] $服务器=“WINNT: // localhost”的 $服务台= $ server.Create( “用户”, “帮助台”) $ HelpDesk.SetPassword( “H3lpD3> K”) $ HelpDesk.SetInfo() 但同时给予以下我得到错误: [ADSI] $ server =“WinNT:// $ servername” $ HD = $ server.Create(“User”,“HD”) $ HD.Se tPassword(“H3lpD3> K”) $ HD.SetInfo() –

+0

我收到错误:'异常调用“setinfo”与“0”参数:“访问被拒绝。 “ 在行:1个字符:12 + $ HD.setinfo <<<<() + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:CatchFromBaseAdapterMethodInvokeTI” 这里servername是名称远程计算机连接到 –

0

如果你有PowerShell脚本在服务器上本地创建一个本地用户帐户,然后只需简单地使用PSExec与管理帐户在远程机器上运行它

+0

我尝试使用以下命令在远程计算机上执行sript - C :\ localwindows.ps1 PSexec.exe \\%comp%-c -f -u域名\用户名%ScriptPath% 但是我仍然收到错误 异常调用带有“0”参数的“SetInfo”: “Access is denied。 ” At C:\ localwindows.ps1:4 char:14 + $ user.SetInfo <<<<(); + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:CatchFromBaseAdapterMethodInvokeTI –

+0

好的我会在开始工作时看看这个。同时,请尝试检查远程计算机上的Windows日志,看看是否有任何记录。同时确认使用的域帐户是否是目标机器上的域管理员组和本地管理员组的成员 – Chelseawillrecover

+0

我使用的帐户是域中的用户(本地管理员角色)。我试图用Computer \ Adminisrator在远程机器上创建帐户,但也抛出excepton:“访问被拒绝。” –

0

调用命令的工作,但你也可以ü se Enter-PSSession - 计算机在远程机器上本地提交命令。 下面会提示用户输入用户名和他们没有密码添加到本地管理员组:

$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 
0

我不知道,如果这个问题仍然是相关的,但我已经尝试过这一点,并发现了什么需要修复。当您创建目录输入对象时,请使用以下代码

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

其余部分是相同的。

相关问题