繁体   English   中英

Powershell脚本用参数运行exe文件

[英]Powershell Script to run exe file with parameters

我需要脚本来运行带参数的exe文件。 这就是我写的,如果有更好的方法吗?

 $Command = "\\\\Networkpath\\Restart.exe" $Parms = "/t:21600 /m:360 /r /f" $Prms = $Parms.Split(" ") & "$Command" $Prms 

谢谢

运行外部可执行文件时有几个选项。


泼溅

$command = '\\netpath\restart.exe'
$params = '/t:21600', '/m:360', '/r', '/f'
& $command @params

此方法实际上将您的数组作为可执行文件的参数加入。 这允许您的参数列表更清晰,并可以重写为:

$params = @(
    '/t:21600'
    '/m:360'
    '/r'
    '/f'
)

这通常是我最喜欢的解决问题的方法。


立即使用参数调用可执行文件

如果参数,路径等中没有空格,则不一定需要变量甚至是调用运算符( &

\\netpath\restart.exe /t:21600 /m:360 /r /f

Start-Process

这是我的第二个目标,因为它让我可以更好地控制最终的过程。 有时,可执行文件会生成子进程,并且您的调用操作符不会等待进程结束,然后再继续执行脚本。 此方法可让您控制该方法。

$startParams = @{
    'FilePath'     = '\\netpath\restart.exe'
    'ArgumentList' = '/t:21600', '/m:360', '/r', '/f'
    'Wait'         = $true
    'PassThru'     = $true
}
$proc = Start-Process @startParams
$proc.ExitCode

System.Diagnostics.Process

我知道的最后一种方法,直接使用Process .NET类。 如果我需要更多的进程控制,比如收集它的输出,我会使用这种方法:

try
{
    $proc = [System.Diagnostics.Process]::Start([System.Diagnostics.ProcessStartInfo]@{
        'FileName'               = "\\netshare\restart.exe"
        'Arguments'              = '/t:21600 /m:360 /r /f'
        'CreateNoWindow'         = $true
        'UseShellExecute'        = $false
        'RedirectStandardOutput' = $true
    })
    $output = $proc.StandardOutput
    $output.ReadToEnd()
}
finally
{
    if ($null -ne $proc)
    {
        $proc.Dispose()
    }
    if ($null -ne $output)
    {
        $output.Dispose()
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM