这是我的情况:
我正在尝试从本地计算机远程启动和停止服务器上的 IIS 7.0 站点,使用执行程序。
一些要点:
- 本地机器运行Windows Vista。
- 服务器运行Windows 2008 R2。
- 每台机器都运行不同的领域。
- 有一个单向信任从我的本地机器的域到我的服务器的域。
- PsExec 是使用域管理员帐户,其被验证为服务器计算机上的本地管理员。
- 本地机器通过别名引用服务器;它不使用服务器的真实名称。
我正在使用以下命令:
"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 命令,但平代替应用程序命令提示符失败。
- 该命令已从命令提示符使用“以管理员身份运行”运行。
- 注册表项禁用严格名称检查已在服务器上设置允许使用别名。
- 注册表项LocalAccountTokenFilterPolicy = 1已在服务器和本地机器上设置。
- 服务器上未运行 Windows 防火墙。
- 本地计算机上的 UAC 已禁用。
- UAC 在服务器上处于活动状态。
- UAC 在服务器上禁用了“管理员批准模式”;这允许命令在域内(而不是域间)工作。
这似乎表明Windows 2008 R2 特有的问题这是与安全设置相关的,可能与域或管理权限有关。但是,我没有主意了。如果您有任何建议,我将不胜感激!
答案1
我花了几个小时才找到一种在两台 Windows 7 计算机之间使用非管理员用户启动 PsExec 的有效方法...禁用 UAC(EnableLUA=0、ConsentPromptBehaviorAdmin=0、LocalAccountTokenFilterPolicy=1)不起作用,关闭防火墙也不起作用……
在这里我找到了可行的方法 - 感谢JelmerS:(信息来自PSexec 未使用提供的用户名和密码连接到计算机)
这是因为 psexec 仍会尝试使用您的本地凭据访问 ADMIN$ 共享,然后再以其他用户身份执行您的命令。根据此线程,您可以在执行 psexec 之前缓存凭据: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
谨致问候,彼得
答案2
您是否在 Vista 工作站上从提升的命令提示符运行 PSEXEC?您是否设置了 LocalAccountTokenFilterPolicy=1?请参阅常见问题解答:常见的 PSTools 问题
答案3
我没有类似的环境可供测试,但我可以推荐的是:在客户端域上,设置批处理脚本 (.bat),为每个要重新启动的网站设置一个。(我将它们称为“ restart_site-sitename.bat
”。)为每个域创建一个,并将它们全部保存到该域的管理服务器上的目录中(我将 sysad 工具放在那里,如果我的笔记本电脑出现问题,我可以在那里管理所有内容),包括该目录中的 PSExec。
psexec.exe \\(server-alias) C:\Windows\System32\inetsrv\appcmd.exe stop site "WebsiteName"
现在尝试运行 psexec 到该管理服务器,并调用其中一个批处理文件。
"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"