我在 PowerShell 中有一个调用 LogParser 的脚本。在脚本的早期,我定义了可执行文件的路径并测试了它的路径:
#Define path to log parser executable
$logParser = '\\hostname\logparser22\LogParser.exe'
if (! $(Test-Path $logParser) )
{
Write-Host -ForegroundColor Red "Could not access: $logParser"
return
}
然后在我调用 LogParser 的脚本中:
$sessionData = & $logParser "SELECT * FROM $logPath where data LIKE `'Contoso\\$user`'" -i:csv -nSkipLines:4 -headers:on -stats:off -o:csv
这在 PowerShell 会话期间可以工作一段时间,但如果运行足够多的时间,它最终会停止工作。一旦我进入一个损坏的 shell 进行一些调试,下面甚至不会产生在不带参数的情况下调用 LogParser 时返回的正常帮助:
& $LogParser
但是,如果我打开一个运行 SAME 确切命令的新 PowerShell 会话,它会工作并调用 LogParser,并且在不传递任何参数时我会从中获得标准响应。
我归结为 & 以某种方式被打破了。有没有人看到这个并知道修复\解决方法?