gpt4 book ai didi

powershell - 在 Powershell 中远程启动进程,在 Windows 中获取 %ERRORLEVEL%

转载 作者:行者123 更新时间:2023-12-03 16:38:32 24 4
gpt4 key购买 nike

一点背景:

我试图在测试开始时远程启动和停止一些性能计数器,然后在测试结束时停止它们。我是从 Win2003 机器的自动化测试框架中执行此操作,该测试框架在不启动控制台的情况下执行命令,一些被测系统正在运行 Win2008。我编写了脚本来根据分配给服务器的角色选择性能计数器。

我的问题:

  • logman无法在运行更高版本操作系统的机器上启动或停止计数器。
  • psexec可用于远程运行 logman,但 psexec 从测试框架运行时喜欢间歇性挂起。它从命令行手动运行良好。我猜这是因为调用过程没有提供控制台,或者一些类似的尴尬。我对此无能为力 (GRRRR)
  • 我写了一个 PowerShell 脚本,它使用 WMI 的 win32_process 远程执行 logman并从批处理脚本中调用它,这很好用。但是,测试框架根据 %ERRORLEVEL% 决定通过和失败场景。和 stderr 的内容,但 WMI 的 win32_process也不让我访问。因此,如果计数器无法启动,则无论如何测试都会继续进行并浪费每个人的时间。

  • 我正在寻找一种解决方案,它允许我在远程机器上执行程序,检查程序的返回代码和/或管道 stderr 返回给调用者。为简单起见,它需要使用可在普通 Win2k3 机器上使用的工具编写。我真的不想使用复杂的脚本集合,这些脚本将内容转储到日志文件中,然后再次读取它们。

    有没有人遇到过类似的问题并解决了它,或者至少有一个建议?

    最佳答案

    For reasons of simplicity, it needs to be written in tools that are available on a vanilla Win2k3 box. I'd really prefer not to use a convoluted collection of scripts that dump things into log files then reading them back out again.



    PowerShell 不是 Windows 2003 中的 native 工具。您还想将此问题标记为 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)" }

    这需要在运行这些脚本的系统上安装 PowerShell 2.0。您的 Windows 2003 远程系统并不真正需要 PowerShell。

    PS:如果您需要有关 WMI 和 PowerShell 的速成类(class),请阅读我的电子指南: WMI Query Language via PowerShell

    关于powershell - 在 Powershell 中远程启动进程,在 Windows 中获取 %ERRORLEVEL%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299720/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com