PowerShell启动进程时隐藏窗口 4


在C#的System.Diagnostics.ProcessStartinfo类可以支持设置进程启动时隐藏窗口,今天再来分享一个使用WMI对象的的方法来隐藏启动程序的窗口。使用Win32_Process可以直接启动一个进程,但是缺少对这个进程的控制:比如让它隐藏自己的窗口。下面的的例子可以做到这一点:

function start-hiddenproc {
    [CmdletBinding()]
    param(
    [string]$processname = 'notepad.exe'
    )

    $startclass = Get-CimClass -ClassName Win32_ProcessStartup
    $startinfo = New-CimInstance -CimClass $startclass -Property @{ShowWindow = 0} -ClientOnly

    $class = Get-CimClass -ClassName Win32_Process
    Invoke-CimMethod -CimClass $class -MethodName Create -Arguments @{
    Commandline = $processname;
    ProcessStartupInformation = [CimInstance]$startinfo
    }
}

该函数将要执行的进程的路径作为参数,这也方便你在脚本中加入验证路径是否存在的逻辑。

获取到Win32_ProcessStartup类,然后使用它创建一个启动信息实例。New-CimInstance的参数ClientOnly有一个别名: –Local。与参数的别名相比,我通常更喜欢使用参数的全名。这样更方便用户去查阅帮助文档。

获取到Win32_Process类,然后在Invoke-CimMethod中使用它的Create方法,将上面演示的的参数传递给它。

原文作者:Richard Siddaway

原文链接:Win32_Examples–start application in hidden window

本文链接: https://www.pstips.net/start-application-in-hidden-window.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 Mooser Lee 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

4 条评论 “PowerShell启动进程时隐藏窗口