PowerShell 신인이 있습니다. 아래의 변수를 구문 분석하기 위해 Select-String을 얻으려고 노력 중입니다.Powershell : 선택 -이 변수를 구문 분석하지 않는 문자열
모든 것을 표준 출력에 기록하는 외부 프로그램을 호출하고 있습니다. 이것은 내가 사용하고있는 백업 동기화 소프트웨어입니다. 출력은 소스, 대상, 복사 된 파일, 변경된 파일 등과 같은 많은 정보입니다. 표준 출력의 일부 항목 만 신경 씁니다. 표준 출력을 가져다가 관심있는 몇 가지 항목에 대해 구문 분석하려고하므로 기타 정보가 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
내가이 프로그램을 실행 한 후 얻을하는 표준 출력에서 모든 라인이다 :
여기에 코드입니다. 나는 내 좋고 깨끗한 파스칼 리턴을 얻지 못하고있다. 그래서 당신이 볼 수있는
$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
:
그래서 시도하고 문제를 해결하기 위해, 나는 다음 텍스트 파일로 $output
를 보낸 다음 실행, 그리고 이것은 내가 가진 무엇 텍스트 파일에 대해 작업하지만 변수로는 작업하지 않습니다.
어떤 통찰력이라도 있습니까?
그 트릭을 했어! – Pat