2017-09-29 4 views
1

私はこれらのコマンドがスクリプト経由で実行されていない理由を理解しようとしています。しかし、私はこれを手動で実行するとうまくいきます。Get-ContentコマンドPowershellの理解

$value = Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
Write-Host "$value" >> c:\list.txt 

私は>>使用してリダイレクトすることを試みたが、まだ何の情報はあなたがSet-ContentAdd-Contentを使用したいと思うファイルに内容を書き込むには、変数$値に

Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } >> $value 
    Write-Host "$value" >> c:\list.txt 
+0

'Cの内容は何ですか?我々はより良​​いコマンドを提供することができます。あなたは本当に何をしようとしていますか? –

+0

私の情報が変数に格納されているかどうかをチェックするだけで、出力をテキストファイル(c:\ list.txt)に出力しています。 – gary

答えて

0

Write-Hostをリダイレクトできません。あなたはそれを削除する必要があります。次の例では、あなたが求めているものでしょう。

Get-Content "C:\info.txt" | select-string Id | Foreach-Object { $_.ToString().Split(':')[1] -replace '\s','' } >> "C:\List.txt" 

を...私は知らないので、私は、文字列操作をするためのものであるかわからないんだけどのに何Cの内容:\ INFO.TXTのルックス好き。

あなたは、単純な出力ではなく、ファイルにリダイレクトされるより$valueに配置したい場合、あなたはこのようにそれを記述しますが:\ list.txt`:

$value = Get-Content "C:\info.txt" | select-string Id | Foreach-Object { $_.ToString().Split(':')[1] -replace '\s','' } 
+0

迅速な対応ありがとう!私は変数$値に格納するGet-Content情報を探しています – gary

+0

更新された回答を参照 - リダイレクトする代わりに、変数に代入してください。 –

0

を更新していない取得しています。あなたの場合、Add-Contentを使用して、>>ストリームリディレーターのようにデータを上書きするのではなく、追加することが望ましいでしょう。 Write-Hostは、特定のケース以外のPowerShellスクリプトでは避けるべきです。その詳細については、hereを参照してください。それはあなたのスクリプトの実行環境に依存しないことがあり、コンソールホストに直接代わりにPowerShellのobjectflowエンジンにオブジェクトを送信し、迂回ので

$value = Get-Content c:\info.txt | select-string Id | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' } 
Add-Content -Path C:\list.txt -Value $value 

Write-Hostは、スクリプト内の任意の出力を生成しなかった理由は何ですかあなたは期待しています。

関連する問題