PowerShellでは、|
と>
の違いは何ですか?Powershell:差異|と>?
dir | CLIP #move data to clipboard
dir > CLIP #not moving, creating file CLIP (no extension)
は、私は右の|
がパイプラインで次のブロックに現在の結果を移動し、>
ファイルにデータが保存されますと仮定するのですか?
他に違いはありますか?
PowerShellでは、|
と>
の違いは何ですか?Powershell:差異|と>?
dir | CLIP #move data to clipboard
dir > CLIP #not moving, creating file CLIP (no extension)
は、私は右の|
がパイプラインで次のブロックに現在の結果を移動し、>
ファイルにデータが保存されますと仮定するのですか?
他に違いはありますか?
(完全ではありません)はい。
|
および>
は、2つの異なるものです。
>
は、いわゆるリダイレクト演算子です。
リダイレクト演算子は、ストリームの出力をファイルまたは別のストリームにリダイレクトします。パイプライン演算子は、コマンドレットまたは関数の戻りオブジェクトを次のパイプライン(またはパイプラインの最後)にパイプします。パイプはオブジェクト全体をその特性でポンピングしますが、リダイレクトパイプはその出力だけです。私たちは、簡単な例を用いてこれを説明することができます。
#Get the first process in the process list and pipe it to `Set-Content`
PS> (Get-Process)[0] | Set-Content D:\test.test
PS> Get-Content D:/test.test
出力
System.Diagnostics.Process(AdAppMgrSvc)
オブジェクトを文字列に変換しよう。
#Do the same, but now redirect the (formatted) output to the file
PS> (Get-Process)[0] > D:\test.test
PS> Get-Content D:/test.test
出力
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 420 25 6200 7512 3536 0 AdAppMgrSvc
第3の例は、パイプオペレータの能力を示すであろう。
PS> (Get-Process)[0] | select * | Set-Content D:\test.test
PS> Get-Content D:/test.test
すべてのプロセスのプロパティを持つこの意志出力のHashtable:パイプは `一方
@{Name=AdAppMgrSvc; Id=3536; PriorityClass=; FileVersion=; HandleCount=420; WorkingSet=9519104; PagedMemorySize=6045696; PrivateMemorySize=6045696; VirtualMemorySize=110989312; TotalProcessorTime=; SI=0; Handles=420; VM=110989312; WS=9519104; PM=6045696; NPM=25128; Path=; Company=; CPU=; ProductVersion=; Description=; Product=; __NounName=Process; BasePriority=8; ExitCode=; HasExited=; ExitTime=; Handle=; SafeHandle=; MachineName=.; MainWindowHandle=0; MainWindowTitle=; MainModule=; MaxWorkingSet=; MinWorkingSet=; Modules=; NonpagedSystemMemorySize=25128; NonpagedSystemMemorySize64=25128; PagedMemorySize64=6045696; PagedSystemMemorySize=236160; PagedSystemMemorySize64=236160; PeakPagedMemorySize=7028736; PeakPagedMemorySize64=7028736; PeakWorkingSet=19673088; PeakWorkingSet64=19673088; PeakVirtualMemorySize=135786496; PeakVirtualMemorySize64=135786496; PriorityBoostEnabled=; PrivateMemorySize64=6045696; PrivilegedProcessorTime=; ProcessName=AdAppMgrSvc; ProcessorAffinity=; Responding=True; SessionId=0; StartInfo=System.Diagnostics.ProcessStartInfo; StartTime=; SynchronizingObject=; Threads=System.Diagnostics.ProcessThreadCollection; UserProcessorTime=; VirtualMemorySize64=110989312; EnableRaisingEvents=False; StandardInput=; StandardOutput=; StandardError=; WorkingSet64=9519104; Site=; Container=}
あなたは正しいです:
|
パイプがダウンオブジェクトはあなたのパイプを使用してオブジェクトを別のコマンドレットからは、あなたがに受信コマンドレットをしたくない成功/出力ストリームエラー、警告、デバッグメッセージ、または冗長メッセージを、処理するように設計されたオブジェクトとともに受信します。
パイプ演算子(|)は実際にオブジェクトを出力ストリーム(ストリーム#1)にパイプします。 https://msdn.microsoft.com/powershell/reference/5.1/Microsoft.PowerShell.Core/about/about_Redirection
:
>
は>>
は、指定されたファイル詳しい情報への出力を追加し、指定したファイルに出力を送信します
リダイレクト演算子が'> 'また、文字列に変換して出力する|'であるとして、オブジェクトを保持します –