Add-Contentコマンドレットの-Valueパラメータ

 

-value <Object[]> パラメータ

指定したファイルに追記する値を指定します。
追記できる値は、文字列、コマンドレットが返す値などを指定します。

–––––––––– -value パラメータの使用例1 ––––––––––

Add-Content -Path "Test.txt" -Value "テストファイルです"

このコマンドレットを実行すると、既存のTest.txtファイルに「テストファイルです」という文字列を追記します。

 

–––––––––– -value パラメータの使用例2 ––––––––––

$a = "テストファイルです"
Add-Content -Path "Test.txt" -Value $a

このコマンドレットを実行すると変数 $a に代入した文字列を Test.txt へ追記します。

 

–––––––––– -value パラメータの使用例3 ––––––––––

Add-Content -Path "Date.txt" -Value (Get-Date)

このコマンドレットを実行すると Get-Dateコマンドレットが返す値を Date.txt に追記します。
このようにコマンドレットが返す値を追記することが可能ですが、複数の値を一度に返すようなコマンドレットを指定した場合には期待通りの値を取得できないので注意が必要です。

 

–––––––––– -value パラメータの使用例4 ––––––––––

Add-Content -Path "Test.txt" -Value (Get-Content "Sample.txt")

このコマンドレットを実行すると、Sample.txt の内容を Test.txt に追記します。
-value パラメータに直接パスを指定しても、パスを文字列として認識してしまうためこのような処理が必要となります。

 

–––––––––– -value パラメータのNG例1 ––––––––––

Add-Content -Path "ServiceList.txt" -Value (Get-Service)

このコマンドレットは Get-Service のコマンドレットの結果を ServiceList.txtに追記しようとしていますが期待通りの結果にはなりません。("System.ServiceProcess.ServiceController"という文字列がサービスの数だけ書き込まれます)
これは、Get-Service が複数のオブジェクトを返すためです。

Get-Service | %{Add-Content -Path "ServiceList.txt" -Value $_.ServiceName}

などの工夫が必要です。

コメント

タイトルとURLをコピーしました