PsExec和Windows 2008 R2:“访问被拒绝”

这是我的场景:

我试图从我的本地机器上使用PsExec远程启动和停止服务器上的IIS 7.0站点。

一些重要的观点:

  • 本地机器运行Windows Vista
  • 服务器运行Windows 2008 R2
  • 每台机器运行在不同的域
  • 从我的本地机器域到我的服务器的域有一个单向信任
  • PsExec正在使用域pipe理员帐户 ,该帐户在服务器计算机上被authentication为本地pipe理员。
  • 本地机器通过别名引用服务器; 它不使用服务器的真实姓名。

我正在使用该命令:

"C:\Program Files\PSTools\psexec.exe" \\(server-alias) -u (server-domain)\(domain-admin) -p (password) C:\Windows\System32\inetsrv\appcmd.exe stop site "Default Web Site" 

这将返回错误:

 PsExec v1.94 - Execute processes remotely Copyright (C) 2001-2008 Mark Russinovich Sysinternals - www.sysinternals.com Could not start PsExec service on (server-alias): Access is denied. 

一些重要的故障排除说明:

  • 该命令在服务器域中的另一台计算机( Windows 2003 R2 )上执行时起作用 。 ( 域内
  • 当从本地机器运行Windows 2003 R2的另一台计算机上执行该命令时也可以使用该命令; 其中两个在不同的领域。 ( 域间
  • 使用相同的PsExec命令,除了ping而不是appcmd.exe失败。
  • 已经使用“以pipe理员身份运行”命令提示符运行该命令。
  • 已在服务器上设置registry项DisableStrictNameChecking以允许使用别名。
  • 已在服务器和本地计算机上设置了registry项LocalAccountTokenFilterPolicy = 1
  • Windows防火墙未在服务器上运行。
  • UAC在本地机器上被禁用。
  • UAC在服务器上处于活动状态。
  • UAC在服务器上禁用了“pipe理员批准模式” 这允许命令工作域内(而不是域间)。

这似乎表明这是一个与Windows 2008 R2相关的特定问题 ,与安全设置相关,可能是根据域或pipe理权限。 但是,我没有想法。 任何build议,你可能会非常感激!

我花了几个小时find一个工作方式PsExec之间的Windows 7计算机与非pipe理员用户启动PsExec …禁用UAC(EnableLUA = 0,ConsentPromptBehaviorAdmin = 0,LocalAccountTokenFilterPolicy = 1)不起作用,closures防火墙不行…

在这里我find了工作方式 – 谢谢JelmerS:(来自PSexec的信息没有使用提供的用户名和密码连接到机器上 )

这是因为psexec仍然尝试使用本地凭证访问ADMIN $共享,然后以另一个用户身份执行命令。 根据此线程,您可以在执行psexec之前caching凭据:cmdkey.exe / add:MACHINE_NAME_HERE / user:MACHINE_NAME_HERE \ Administrator / pass:PASSWORD_HERE psexec.exe \ MACHINE_NAME_HERE -i notepad cmdkey.exe / delete:MACHINE_NAME_HERE

最好的问候,彼得

你是否在Vista工作站上用提升的命令提示符运行PSEXEC? 你有没有设置LocalAccountTokenFilterPolicy = 1? 请参阅常见问题解答:常见PSTools问题

我没有类似的环境进行testing,但是我可以推荐的是:在客户端域上,设置批处理脚本(.bat),为每个要重新启动的网站设置一个。 (我将称它们为“ restart_site-sitename.bat ”。)为每个域创build一个,并将其全部保存到该域中的pipe理服务器上的一个目录中(我将sysad工具放在这里,发生在我的笔记本电脑上),包括该目录中的PSExec。

 psexec.exe \\(server-alias) C:\Windows\System32\inetsrv\appcmd.exe stop site "WebsiteName" 

现在尝试运行psexec到该pipe理服务器,而是调用其中一个batch file。

 "C:\Program Files\PSTools\psexec.exe" \\(server-alias) -u (server-domain)\(domain-admin) -p (password) C:path\to\psexec_and_scripts\restart_site-sitename.bat"