PowerShell 初心者です。以下の変数を解析するために Select-String を取得しようとして立ち往生しています。
すべてを標準出力に記録する外部プログラムを呼び出しています。これは、私が使用しているバックアップ同期ソフトウェア用です。出力は、ソース、宛先、コピーされたファイル、変更されたファイルなどの多くの情報です。私は標準出力からいくつかの項目だけを気にします。標準出力を取得して、関心のあるいくつかの項目を解析しようとしているので、その他の 50 行のその他の情報ではなく、それらの項目のみが表示されます。
コードは次のとおりです。
$procInfo = New-Object System.Diagnostics.ProcessStartInfo
$procInfo.FileName = "C:\Program Files\Siber Systems\GoodSync\gsync.exe"
$procInfo.RedirectStandardError = $true
$procInfo.RedirectStandardOutput = $true
$procInfo.UseShellExecute = $false
$procInfo.Arguments = "/progress=yes /exit sync DroboBackup"
$proc = New-Object System.Diagnostics.Process
$proc.StartInfo = $procInfo
$proc.Start() | Out-Null
(Get-Date -format T) + ": Backup Process Running. Please Stand By..."
$proc.WaitForExit()
if ($proc.ExitCode -eq 0)
{
"GoodSync Reported: Analyze or Sync Successfully Completed."
} elseif ($proc.ExitCode -eq 1)
{
"GoodSync Error: Analyze had Terminal Errors. Did gsync.exe close abruptly?"
} elseif ($proc.ExitCode -eq 2)
{
"GoodSync Error: Sync had Terminal Errors. Did gsync.exe close abruptly?"
} else
{
"GoodSync Error: General Error. Typo in job name?"
}
$output = $proc.StandardOutput.ReadToEnd()
$output += $proc.StandardError.ReadToEnd()
#$output | Out-File c:\output.txt -Append
$newOutput = $output | Select-String "Copy New","Copy Over","Delete File","Items Synced","Changes:"
$newOutput
これを実行した後に得られるのは、標準出力からのすべての行です。素敵できれいな解析結果が得られません。
そこで、トラブルシューティングを試みるため$output
に、テキスト ファイルに送信してから以下を実行したところ、次のような結果が得られました。
$x = Get-Content c:\output.txt | Select-String "Copy New","Copy Over","Delete File","Items Synced","Changes:"
$x
PS C:\> .\test.ps1
Changes: 0, Conflicts: 0, CopyTime: 0, CopyState: 0/0, Errors: 0
ご覧のとおり、テキスト ファイルに対しては機能していますが、変数としては機能していません。
洞察はありますか?