1

LogParser を呼び出す PowerShell のスクリプトがあります。スクリプトの早い段階で、実行可能ファイルへのパスを定義し、そのパスをテストします。

#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 セッション中にしばらくの間ファイルを動作させますが、十分な回数実行すると、最終的に動作を停止します。壊れたシェルに入ってから少しデバッグすると、以下は、パラメーターなしで LogParser を呼び出したときに返される通常のヘルプを生成しません。

& $LogParser

ただし、まったく同じコマンドを実行している新しい PowerShell セッションを開くと、動作して LogParser が呼び出され、パラメーターを渡さないときに標準の応答が返されます。

私がたどり着いたのは、どういうわけか壊れています。誰もこれを見て、修正\回避策を知っていますか?

4

3 に答える 3

1

おそらく、別の方法を使用して、コマンドレットを使用して外部プロセスを開始することができます。

$logParser = '\\hostname\logparser22\LogParser.exe'
$allArgs = ("SELECT * FROM $logPath where data LIKE `'Contoso\\$user`'", "-i:csv", "-nSkipLines:4", "-headers:on", "-stats:off -o:csv")
$ps = Start-Process -FilePath $logParser -ArgumentList $allargs -Wait -Passthru -NoNewWindow -RedirectStandardOutput $tempoutputfile -RedirectStandardError $temperrorfile;
$ps.WaitForExit() # block till exe finish
$ps.ExitCode;

エラーについてさらに説明が必要です。

于 2011-10-30T09:18:26.673 に答える
0

これは、PowerShell が大量のコンソール出力を処理する方法のこの欠陥に関連している可能性があります。これは、LogParser で簡単に発生する可能性があります。これは、PowerShell 3.0 で修正されたと思われます。

于 2012-03-08T19:19:51.787 に答える