3

if/else キャッチを追加する方法はありますか

$excelId = get-process excel | %{$_.Id} | ?{$before -notcontains $_}

Excelプロセスが実行されていない場合は?たとえば、Excelが実行されている場合はプロセス ID を取得し、実行されていない場合は無視します。

Get-Process : "excel" という名前のプロセスが見つかりません。プロセス名を確認し、コマンドレットを再度呼び出します。run.ps1:3 で char:24 + $before = @(get-process <<<< Excel | %{$_.Id} ) + CategoryInfo : ObjectNotFound: (excel:String) [Get-Process], ProcessCommandException + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

私のコードの3-5行目は次のとおりです。

$before = @(get-process excel | %{$_.Id} ) 
$excel=new-object -com excel.application
$excelId = get-process excel | %{$_.Id} | ?{$before -notcontains $_}
4

3 に答える 3

6

パラメーターを使用して-ErrorAction、PowerShell にSilentlyContinueスクリプトに結果が何であれ伝えることができますGet-Process。その後$?、エラーの最終的な存在に応じて設定されます(したがって、探しているプロセスも存在しません)。

$excel = Get-Process excel -ErrorAction SilentlyContinue
if (-not $?) { 'Excel is not running.' }
于 2013-10-27T10:25:37.050 に答える