方法一
在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 } }
该函数将要执行的进程的路径作为参数,这也方便你在脚本中加入验证路径是否存在的逻辑。