晴耕雨読

working in the fields on fine days and reading books on rainy days

PowerShellでNew-Itemの出力結果を表示させない方法

PowerShell の New-Item でファイルやフォルダを作成したときに、結果を出力しないようにするには $null にリダイレクトさせることで、出力を制御できるようになります。

標準出力

PowerShell のコマンドレットの出力を、$null にリダイレクトすると結果が出力されなくなります。 フォルダ作成時も同様です。 書き方はを末尾に > $null 追加します。

New-Item "sample.txt" > $null
New-Item -ItemType directory "myfolder" > $null

エラー出力

既に存在するファイルを New-Item で作成しようとすると、エラーが発生します。 エラー出力は $null にリダイレクトする前に、エラー出力 (2) を標準出力 (1) に接続してから、$null にリダイレクトすると結果とエラーの両方が出力されなくなります。

New-Item "sample.txt" 2>&1 > $null
New-Item -ItemType directory "myfolder" 2>&1 > $null

他の方法として、try-catch構文を使う方法もあります。 変数 $ErrorActionPreference に Stop を設定し、try-catchを使うことでエラー出力を制御することができます。

$ErrorActionPreference = "Stop"
try {
    New-Item "sample.txt" > $null
} catch {
    Write-Output "エラーが発生しました"
}

ただし、New-Item コマンドレットに関しては、Test-Path でファイルの存在チェックをしてから、New-Item でファイルを作成すれば、そもそもエラーが発生するケースになりません。

if (!(Test-Path "sample.txt")) {
    New-Item "sample.txt"
}

以上です。

参考文献