gpt4 book ai didi

parsing - Powershell:Select-String 不解析此变量

转载 作者:行者123 更新时间:2023-12-01 11:51:07 26 4
gpt4 key购买 nike

这里是 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

如您所见,它是针对文本文件工作的,而不是作为变量工作的。

有什么见解吗?

最佳答案

您正在使用 StreamReader 读取标准输出的 ReadToEnd()方法。这将返回一个包含内容的单个 字符串,包括回车符。因此,当您在管道上输出此字符串时,Select-String 只会看到那个大字符串,而不是每一行。您可以做的是在将字符串传递到管道之前拆分回车符上的字符串:

$output -split "`n" | Select-String "Copy New","Copy Over","Delete File","Items Synced","Changes:"

关于parsing - Powershell:Select-String 不解析此变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11349168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com