Out-File

ファイルに出力を送信します。

構文

Out-File
   [-FilePath] <string>
   [[-Encoding] <string>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <string>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

説明

コマンドレットは Out-File 出力をファイルに送信します。 PowerShell の書式設定システムを暗黙的に使用してファイルに書き込みます。 ファイルはターミナルと同じ表示表現を受け取ります。 つまり、すべての入力オブジェクトが文字列でない限り、出力はプログラムによる処理に適していない可能性があります。 出力のパラメーターを指定する必要がある場合は、リダイレクト演算子 (>) ではなく、使用Out-Fileします。 リダイレクトの詳細については、「about_Redirection」を参照してください

例 1: 出力を送信してファイルを作成する

この例では、ローカル コンピューターのプロセスの一覧をファイルに送信する方法を示します。 ファイルが存在しない場合は、 Out-File 指定したパスにファイルを作成します。

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

このコマンドレットは Get-Process 、ローカル コンピューターで実行されているプロセスの一覧を取得します。 Process オブジェクトは、パイプラインからコマンドレットにOut-File送信されます。 Out-Fileは FilePath パラメーターを使用し、Process.txtという名前の現在のディレクトリにファイルを作成します。 このコマンドは Get-Content 、ファイルからコンテンツを取得し、PowerShell コンソールに表示します。

例 2: 既存のファイルが上書きされないようにする

この例では、既存のファイルが上書きされないようにします。 既定では、 Out-File 既存のファイルが上書きされます。

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

このコマンドレットは Get-Process 、ローカル コンピューターで実行されているプロセスの一覧を取得します。 Process オブジェクトは、パイプラインからコマンドレットにOut-File送信されます。 Out-Fileは FilePath パラメーターを使用し、Process.txtという名前の現在のディレクトリ内のファイルへの書き込みをみます。 NoClobber パラメーターは、ファイルが上書きされないようにし、ファイルが既に存在することを示すメッセージを表示します。

例 3: ASCII 形式でファイルに出力を送信する

この例では、特定のエンコードの種類で出力をエンコードする方法を示します。

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

このコマンドレットは Get-Process 、ローカル コンピューターで実行されているプロセスの一覧を取得します。 Process オブジェクトは変数$Procsに格納されます。 Out-Fileは FilePath パラメーターを使用し、Process.txtという名前の現在のディレクトリにファイルを作成します。 InputObject パラメーターは、プロセス オブジェクト$Procsをファイル Process.txtに渡します。 Encoding パラメーターは、出力を ASCII 形式に変換します。 Width パラメーターは、ファイル内の各行を 50 文字に制限するため、一部のデータが切り捨てられる可能性があります。

例 4: プロバイダーを使用して出力をファイルに送信する

この例では、FileSystem プロバイダー ドライブにいない場合にコマンドレットを使用Out-Fileする方法を示します。 コマンドレットを Get-PSProvider 使用して、ローカル コンピューター上のプロバイダーを表示します。 詳細については、「about_Providers」を参照してください

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

このコマンドではSet-Location、Path パラメーターを使用して、現在の場所をレジストリ プロバイダーに設定しますAlias:。 コマンドレットには Get-Location 、次の完全なパス Alias:が表示されます。 Get-ChildItem は、パイプラインの下にオブジェクトをコマンドレットに Out-File 送信します。 Out-Fileは FilePath パラメーターを使用して、出力の完全なパスとファイル名 C:\TestDir\AliasNames.txt を指定します。 コマンドレットは Get-Content Path パラメーターを使用し、PowerShell コンソールにファイルの内容を表示します。

例 5: スコープ全体のファイル出力幅を設定する

この例では、$PSDefaultParameterValuesリダイレクト 操作者 (>および>>) のすべての呼び出しのOut-Fileパラメーターを 2000 に設定Widthします。 これにより、テーブル形式のデータをファイルに出力する現在のスコープ内のすべての場所で、PowerShell ホストのコンソールの幅によって決まる行幅ではなく、2000 の行幅が使用されます。

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

$PSDefaultParameterValues の詳細については、「about_Preference_Variables」を参照してください。

パラメーター

-Append

既存のファイルの末尾に出力を追加します。 Encoding が指定されていない場合、コマンドレットは既定のエンコードを使用します。 そのエンコードは、ターゲット ファイルのエンコードと一致しない可能性があります。 これは、リダイレクト演算子 (>>) と同じ動作です。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

ターゲット ファイルのエンコードの種類を指定します。 既定値は unicode です。

このパラメーターに使用できる値は次のとおりです。

  • ascii ASCII (7 ビット) 文字セットを使用します。
  • bigendianunicode ビッグ エンディアンバイト順で UTF-16 を使用します。
  • default システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。
  • oem システムの現在の OEM コード ページに対応するエンコードを使用します。
  • stringunicode と同じです。
  • unicode リトル エンディアン バイト順で UTF-16 を使用します。
  • unknownunicode と同じです。
  • utf7 UTF-7 を使用します。
  • utf8 UTF-8 を使用します。
  • utf32 リトル エンディアンバイト順で UTF-32 を使用します。
Type:String
Accepted values:ASCII, BigEndianUnicode, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:1
Default value:Unicode
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

出力ファイルのパスを指定します。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

読み取り専用属性をオーバーライドし、既存の読み取り専用ファイルを上書きします。 Force パラメーターは、セキュリティ制限をオーバーライドしません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

ファイルに書き込むオブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

出力ファイルのパスを指定します。 LiteralPath パラメーターは、型指定されたとおりに使用されます。 ワイルドカード文字は使用できません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。 詳細については、「about_Quoting_Rules」を参照してください

Type:String
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoClobber

NoClobber は、既存のファイルが上書きされないようにし、ファイルが既に存在することを示すメッセージを表示します。 既定では、指定したパスにファイルが存在する場合は、 Out-File 警告なしでファイルを上書きします。

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewline

ファイルに書き込まれたコンテンツが改行文字で終わらないことを指定します。 入力オブジェクトの文字列形式が連結されて出力が形成されます。 出力文字列の間にスペースや改行は挿入されません。 最後の出力文字列の後に改行は追加されません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

出力の各行の最大文字数を指定します。 これを超過する文字は、折り返されることなく切り捨てられます。 このパラメーターを使用しない場合、幅はホストの特性によって決まります。 PowerShell コンソールの既定値は 80 文字です。 使用する前Out-Fileに設定$PSDefaultParameterValues['out-file:width'] = 2000されたリダイレクト演算子 (>および) だけでなく、すべての呼び出し>>Out-File幅を制御する場合。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

PSObject

任意のオブジェクトをこのコマンドレットにパイプできます。

出力

None

このコマンドレットは、出力を返しません。

メモ

入力オブジェクトはターミナルと同じように自動的に書式設定されますが、コマンドレットを Format-* 使用して、ファイルへの出力の書式設定を明示的に制御できます。 たとえば、Get-Date | Format-List | Out-File out.txt のように指定します。

PowerShell コマンドの出力をコマンドレットに Out-File 送信するには、パイプラインを使用します。 または、変数にデータを格納し、InputObject パラメーターを使用してコマンドレットにデータをOut-File渡すこともできます。

Out-File はデータをファイルに保存しますが、パイプラインに出力オブジェクトを生成しません。