質問

PowerShellからいくつかのlogparserコマンドを実行しようとしていますが、引数を正しく渡せないという問題があります。スクリプトからのexcertです。

d:\ scripting \ smtplogs \ logparser \ logparser.exe <!> quot; SELECT TOP 50 Receiver、COUNT()INTO%TMPOutput%\ TopReceiversNDRALL.gif FROM%TempDir%\ PostAll.log WHERE Sender LIKE '<!> lt; <!> gt;'そして、受信者は '%% go-fmtopper %%'とは異なりますGROUP BY Receiver ORDER BY COUNT()DESC <!> quot; -i:TSV -iSeparator:space -headerRow:OFF -iHeaderFile:<!> quot; header3.tsv <!> quot; -lineFilter:<!> quot; +10。<!> quot; -o:CHART -chartType:ColumnClustered -config:MyScript.js -chartTitle:<!> quot;%DateGraph%<!> quot;のNULLメッセージALLの受信者

引数のカプセル化に関する記事を読んだことがありますが、これを機能させる方法を理解できないようです!

皆さんが提供できる支援は非常にありがたいです。

ありがとう

役に立ちましたか?

解決

複雑な文字列パラメーターの場合、powershell here-strings を使用すると、一重引用符または二重引用符のエスケープについて心配する必要がなくなります

UPDATE1 :フォマット処理が機能しなかったため、ここにスクリーンショットを示します。 alt text

UPDATE2 :最終的にコードをフォーマットできました。

d:\scripting\smtplogs\logparser\logparser.exe @"
SELECT TOP 50 Receiver, COUNT() 
INTO %TMPOutput%\TopReceiversNDRALL.gif 
FROM %TempDir%\PostAll.log 
WHERE Sender LIKE '' 
      AND Receiver NOT LIKE '%%go-fmtopper%%' 
GROUP BY Receiver 
ORDER BY COUNT() DESC" 
-i:TSV 
-iSeparator:space 
-headerRow:OFF 
-iHeaderFile:"header3.tsv" 
-lineFilter:"+10." 
-o:CHART 
-chartType:ColumnClustered 
-config:MyScript.js 
-chartTitle:"Receivers for NULL messages ALL for %DateGraph%
"@

ヒアストリングモニカー @ <!> quot; <!> quot; @ の間に新しい行を追加してください。

他のヒント

FYI、PowerShell変数の展開が必要ない場合は、ここで単一引用符で囲まれた文字列を使用することをお勧めします。たとえば、次の二重引用符で囲まれた文字列は、悲しみを引き起こす可能性があります:

@"
$(get-process <some_core_os_process> | stop-process)
"@

次は無害です:

@'
$(get-process <some_core_os_process> | stop-process)
'@

ここでの文字列に明白なものが含まれている可能性は低いですが、単純な$ fは何も解決しない、つまり元の文字列から消えます。もちろん、$ fが定義され、nullまたは空以外の値に設定されていない限り。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top