1

我正在尝试通过调用Win32_Process类从 vbscript 中的远程 Windows 服务器上运行一个简单的 cmd 实用程序,如下所示:

serverIP = "10.0.0.3"
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & serverIP & "\root\cimv2:Win32_Process")
RunCommand = "cmd.exe /c echo hello >c:\hello.txt"
wscript.echo RunCommand
intReturn = oWMI.Create(RunCommand, Null, Null, intProcessID)  
wscript.echo intReturn
Select Case intReturn
        Case 0 Wscript.Echo "Successful"
        Case 2 Wscript.Echo "Access denied"
        Case 3 Wscript.Echo "Insufficient privilege"
        Case 8 Wscript.Echo "Unknown failure"
        Case 9 Wscript.Echo "Path not found"
        Case 21 Wscript.Echo "Invalid parameter"
        Case Else Wscript.Echo "Unable to execute for unknown reason"
End Select

这总是因 privs 不足而失败(返回代码 3)。

谁能看到我做错了什么?该脚本是从作为域管理员调用的 cmd 会话中运行的,因此它应该可以正常工作,除非我不完全了解有关 WMI 安全性的某些内容。

可能会有人建议PSEXEC。我意识到了这一点,并且可能会退回到它。但这似乎是一个可以解决的问题,我不想为此脚本创建对外部可执行文件的依赖关系。

我会提到一些我尝试过的事情。

  • 这个家伙,如果没有加载配置文件,可能会出现问题。即使调用用户(域管理员)登录到两个系统,我也会遇到同样的问题。
  • 在这个线程中,Richard Mueller 指出应该同时指定 impersonationlevel=impersonate 和 authenticationlevel=Pkt。我试过了。还是不行。
  • 在此页面上,似乎应该指定名字对象中所需的NT 权限。我已尝试指定 SeInteractiveLogonRight、SeNetworkLogonRight、SeBackupPrivilege、SeRestorePrivilege、SeDebugPrivilege 和 SeChangeNotifyPrivilege。没有任何效果。

我在谷歌搜索时注意到的一个共同点是,人们在某些目标计算机上看到了这个问题,但在其他计算机上却没有。所以在我看来,根本上缺少的是完成这项任务所需的安全权限的全面分解。棒棒糖将不胜感激地发送给任何可以明确提供此类故障的人!

徒劳地希望它会增加收视率,我将在此处添加 .net 标签,因为 .net 人员经常处理相同的 WMI 问题并且可能有洞察力。

哇。Bump,这不会变成风滚草吧?

4

4 回答 4

2

我有类似的问题。http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/305557c4-df94-4d92-85bf-a049c83f120c的建议 帮助了我。很快:确保 LOCAL SERVICE 和 NETWORK SERVICE 帐户被授予“替换进程级令牌”(SeAssignPrimaryTokenPrivilege)。

于 2010-07-02T10:59:00.967 回答
1

在此页面上,似乎应该指定名字对象中所需的 NT 权限。我已尝试指定 SeInteractiveLogonRight、SeNetworkLogonRight、SeBackupPrivilege、SeRestorePrivilege、SeDebugPrivilege 和 SeChangeNotifyPrivilege。没有任何效果。

请注意,如果您尝试使用上面列出的特权字符串(直接来自 NT 权限),那将不起作用。您应该使用WMI 安全设置表 6.8 中显示的名字对象权限

(但是,如果您已经是域管理员并且您只是尝试 cmd.exe echo > 文件,那几乎肯定不是问题)

于 2009-08-19T19:35:17.450 回答
0

在 MS Technet 上查看此详细页面,该页面摘自“Microsoft Windows 管理员的高级 VBScript”一书, 特别是“第 6 章:Don Jones 和 Jeffery Hicks 的远程脚本”,其中包含有关确保目标设备正确配置为远程脚本的详细信息.

另请查看 c:\winnt\system32\WBEM\logs\wmiprov.txt 我敢打赌你看到的是这样的:

(Mon Jun 01 16:57:19 2009.2x) : ***************************************
(Mon Jun 01 16:57:19 2009.2x) : Could not get pointer to binary resource for file:
(Mon Jun 01 16:57:19 2009.2x) : C:\WINNT\system32\DRIVERS\wmiacpi.sys[MofResource](Mon Jun 01 16:57:19 2009.2x) : 
(Mon Jun 01 16:57:19 2009.2x) : ***************************************
于 2009-06-01T23:56:22.477 回答
0

您是否在服务器端的日志事件中找到有关错误的更多信息。这有助于诊断访问权限错误,或尝试使用FileMon监控访问。

于 2009-04-30T13:10:24.153 回答