Gar*_*son 4 powershell wmi win32-process
一点背景:
我试图在测试开始时远程启动和停止一些性能计数器,然后在测试结束时停止它们.我是从Win2003机器的自动化测试框架做到这一点,测试框架执行命令而不启动控制台,一些被测系统正在运行Win2008.我编写了脚本来根据分配给服务器的角色选择性能计数器.
我的问题:
logman
无法在运行更高版本操作系统的计算机上启动或停止计数器.psexec
可用于远程运行logman,但psexec喜欢在从测试框架运行时间歇性地挂起.它从命令行手动运行.我猜这是因为调用进程不提供控制台或类似的尴尬.我无能为力(GRRRR)win32_process
并从批处理脚本调用它,这很好用.但是,测试框架根据%ERRORLEVEL%
stderr的内容和内容决定传递和失败场景,但WMI win32_process
不允许我访问任何一个.因此,如果计数器无法启动,测试将继续进行,并浪费每个人的时间.我正在寻找一个解决方案,允许我在远程机器上执行程序,检查程序的返回代码和/或管道stderr回到调用者.为简单起见,需要使用vanilla Win2k3盒子上的工具编写.我真的不想使用一个复杂的脚本集合,将事物转储到日志文件中,然后再将它们读回来.
有没有人有类似的问题,并解决了它,或者至少有一个建议?
为简单起见,需要使用vanilla Win2k3盒子上的工具编写.我真的不想使用一个复杂的脚本集合,将事物转储到日志文件中,然后再将它们读回来.
PowerShell不是Windows 2003中的本机工具.您是否仍想标记此问题PowerShell并寻找答案?无论如何,我会给你一个PowerShell答案.
$proc = Invoke-WmiMethod -ComputerName Test -Class Win32_Process -Name Create -ArgumentList "Notepad.exe"
Register-WmiEvent -ComputerName test -Query "Select * from Win32_ProcessStopTrace Where ProcessID=$($proc.ProcessId)" -Action { Write-Host "Process ExitCode: $($event.SourceEventArgs.NewEvent.ExitStatus)" }
Run Code Online (Sandbox Code Playgroud)
这需要在运行这些脚本的系统上使用PowerShell 2.0.您的Windows 2003远程系统并不真正需要PowerShell.
PS:如果您需要有关WMI和PowerShell的速成课程,请通过PowerShell阅读我的eGuide:WMI查询语言
归档时间: |
|
查看次数: |
15127 次 |
最近记录: |