如何以非域用户身份执行 psexec?

如何以非域用户身份执行 psexec?

我有一个 Windows Server 2012 和一个 Windows 7 客户端。

我想在我的 Windows 客户端上运行 psexec 来.bat在我的服务器上执行文件:

psexec /accepteula \\MyServer -u MyUser -p Mypass -d -i "C:/test.bat"

命令返回:

拒绝访问。

当我以域用户身份登录到我的客户端时,命令运行并且不会失败。

但我喜欢与本地(非域)用户一起运行它。

答案1

我知道这是一个非常古老的问题,但是它的答案却非常不完整,而且它却是最佳搜索结果。

因此,PSEXEC 要在机器上运行,需要满足一些先决条件。主要包括:

  • 在非域加入计算机上,您必须拥有本地管理员用户。通过 psexec 连接到计算机时,您将使用该用户名。

  • 如果计算机已加入域,那么您将需要使用目标计算机上的本地管理员或域管理员帐户。

  • 机器必须在计算机上打开管理共享,并且您正在连接的用户必须具有该共享的权限。(管理员)

  • 您必须制定特定的防火墙规则。(同样,通常在加入域时启用。)

即使在已加入域的计算机上,域计算机的管理员共享也存在问题,或者共享无法正常工作,这种情况很常见。在 Windows Vista 及更高版本中,一个常见原因是引入了一些额外的安全/过滤措施,并且计算机加入域时某些注册表项未打开/添加。您可以在此处了解如何修复该问题: https://support.microsoft.com/en-us/help/947232/error-message-when-you-try-to-access-an-administrative-share-on-a-wind

另一个经常出现的问题是需要添加防火墙规则。在 Windows 防火墙中,您要设置为“允许”的特定规则是“远程服务管理”。

要添加该注册表项并添加防火墙规则,您可以运行以下命令。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

netsh advfirewall firewall add rule name="PSExec TCP" dir=in action=allow protocol=TCP localport=445

netsh advfirewall firewall add rule name="PSExec UDP" dir=in action=allow protocol=UDP localport=137

答案2

如果您要使用本地帐户登录您的计算机,即使该计算机已加入域(我不知道您为什么要这样做),并且您尝试在加入域的服务器上运行命令,您应该确保您使用的是正确的服务器上域用户的用户名和密码。

尝试这个 -

psexec /accepteula \\server -u domain\username -p passwd -e "C:\test.bat"

确保您用于在服务器上运行 test.bat 的域用户帐户具有在服务器上运行该文件的正确安全权限。

如果您以本地用户身份运行 C:\test.bat,则域将是您正在使用的本地用户的计算机的名称。

答案3

PSexec 运行所用的帐户必须存在于服务器上。如果您想在加入域的服务器上以本地帐户运行该命令,则需要在加入域的服务器上创建一个本地帐户,其用户名和密码与工作站上的用户名和密码相同。

如果您只想从您的(未加入域的?)工作站运行命令,您应该按照 user5870571 的建议进行操作。

相关内容