間違った質問をすると、@ JamesKoと表示されます。間違った答えを得ました:-(。いくつかの人は、(a)Linuxエクスポージャーの欠如と(b)という冗長語をというように使います。以下では、このトピックでLinuxがPowerShellとどのように関係しているかを説明しますが、急いでいる場合は最後に答えにジャンプしてください。
背景 PowerShellでは、冗長PowerShell man pageもかなり曖昧程度で非常に特別な意味を持っている
:
コマンドが実行した操作の詳細情報を表示します。この情報は、トレースまたは トランザクションログの情報に似ています。このパラメーターは、コマンドによって冗長メッセージ が生成された場合にのみ機能します。
あなたが望むように聞こえます...しかし、この(man-pages projectから)...
可能性があり、シェルはそれが 後に標準エラー出力に各コマンドのトレースを記述しなければならない、のは、Linuxの味に依存している、set -x
のためのLinuxのドキュメントにそれを比較してみましょうコマンドを展開してから実行します。
またはこの(gnuから)...
、コマンドのために、簡単なコマンドのトレースを出力する場合は、コマンド、 コマンドを選択して、コマンドとその引数または 関連する単語リストのための算術それらが展開された後、それらの前に実行されます。
あなたの質問の最初の行は、これらと明確かつ簡潔に一致しています。しかし、PowerShellの冗長は異なっています。簡単に言えば、冗長モード(-Verbose
コマンドラインスイッチまたは$VerbosePreference
変数)をオンにするだけで、冗長ストリームからコンソールへの出力が可能になります。 (Linuxがstdoutとstderrの2つのストリームを提供するのと同じように、PowerShellは、出力ストリーム、エラーストリーム、警告ストリーム、冗長ストリーム、およびデバッグストリームの複数のストリームを提供します。でも例えば、stdoutに冗長ストリームをマージするために、例えば、commands 4>&1
を使用しています。(あなたはPowerShell One-Liners: Accessing, Handling and Writing Dataの基本的な書き込みストリームセクションと良いクイックリファレンスでのPowerShellの複数の出力ストリームについての詳細をComplete Guide to PowerShell Punctuationさ読み取ることができます。)
回答
Set-PSDebugコマンドは、bashと同等のトレースを行います。でトレースの詳細を調整することもできます。パラメータ。まず、ここでの制御がSet-PSDebug
を使用する前に、です:の値で
PS> Get-PSDepth
0
それは実行時には、コードの各行を取得し、例えば:の値で
PS> Set-PSDebug -Trace 1
PS> Get-PSDepth
DEBUG: 1+ >>>> Get-PSDepth
DEBUG: 141+ >>>> {
DEBUG: 142+ >>>> $nest = -1
DEBUG: 143+ >>>> $thisId = $pid
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 145+ >>>> $thisId = (gwmi win32_process -Filter "processid='$thisId'").ParentProcessId
DEBUG: 146+ >>>> $nest++
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 148+ >>>> $nest
0
DEBUG: 149+ >>>> }
変数の割り当てとコードパスが得られます。
PS> Set-PSDebug -Trace 2
PS> Get-PSDepth
DEBUG: 1+ >>>> Get-PSDepth
DEBUG: ! CALL function '<ScriptBlock>'
DEBUG: 141+ >>>> {
DEBUG: ! CALL function 'Get-PSDepth' (defined in file 'C:\Users\msorens\Documents\WindowsPowerShell\profile.ps1')
DEBUG: 142+ >>>> $nest = -1
DEBUG: ! SET $nest = '-1'.
DEBUG: 143+ >>>> $thisId = $pid
DEBUG: ! SET $thisId = '9872'.
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 145+ >>>> $thisId = (gwmi win32_process -Filter "processid='$thisId'").ParentProcessId
DEBUG: ! SET $thisId = '10548'.
DEBUG: 146+ >>>> $nest++
DEBUG: ! SET $nest = '0'.
DEBUG: 144+ while (>>>> (ps -id $thisId).Name -eq 'powershell') {
DEBUG: 148+ >>>> $nest
0
DEBUG: 149+ >>>> }
これらはsimpの痕跡です私が書いたleコマンドレットは、Get-PSDepth
と呼ばれています。 DEBUG
接頭辞、実際の出力(この場合は0
を含む単一行)が混在したコマンド、割り当てなどを出力します。
最初に、あなたの担当者のユーザーは、質問する前に少し研究していたはずですか? [google:Echo on powershell](http://www.google.com/search?q=Echo+on+for+powershell&oq=Echo+on+for+powershell) – LotPings
@LotPings申し訳ありませんが、私には起こりませんでしたGoogleの "echo on on powershell"へ。 –