次の方法で共有


Out-String

入力オブジェクトを文字列として出力します。

構文

Out-String
   [-Width <Int32>]
   [-NoNewline]
   [-InputObject <PSObject>]
   [<CommonParameters>]
Out-String
   [-Stream]
   [-Width <Int32>]
   [-InputObject <PSObject>]
   [<CommonParameters>]

説明

Out-String コマンドレットは、入力オブジェクトを文字列に変換します。 既定では、 Out-String は文字列を蓄積して 1 つの文字列として返しますが、 Stream パラメーターを使用して、 Out-String を一度に 1 行ずつ返したり、文字列の配列を作成したりできます。 オブジェクトを簡単に操作できないときに、このコマンドレットを使用すると、従来のシェルで行う場合と同じように文字列出力を検索して操作することができます。

PowerShell では、パイプラインでOut-Stringを使用するための短縮形の方法としてOut-String -Streamを呼び出すOSS関数も追加されます。

例 1: 現在のカルチャを取得し、データを文字列に変換する

この例では、現在のユーザーの地域設定を取得し、オブジェクト データを文字列に変換します。

$C = Get-Culture | Select-Object -Property *
Out-String -InputObject $C -Width 100

Parent                         : en
LCID                           : 1033
KeyboardLayoutId               : 1033
Name                           : en-US
IetfLanguageTag                : en-US
DisplayName                    : English (United States)
NativeName                     : English (United States)
EnglishName                    : English (United States)
TwoLetterISOLanguageName       : en
ThreeLetterISOLanguageName     : eng
ThreeLetterWindowsLanguageName : ENU
CompareInfo                    : CompareInfo - en-US
TextInfo                       : TextInfo - en-US
IsNeutralCulture               : False
CultureTypes                   : SpecificCultures, InstalledWin32Cultures, FrameworkCultures
NumberFormat                   : System.Globalization.NumberFormatInfo
DateTimeFormat                 : System.Globalization.DateTimeFormatInfo
Calendar                       : System.Globalization.GregorianCalendar
OptionalCalendars              : {System.Globalization.GregorianCalendar,
                                 System.Globalization.GregorianCalendar}
UseUserOverride                : True
IsReadOnly                     : False

$C変数には、Selected.System.Globalization.CultureInfo オブジェクトが格納されます。 このオブジェクトは、パイプラインからSelect-Objectに出力Get-Culture送信した結果です。 Property パラメーターは、アスタリスク (*) ワイルドカードを使用して、オブジェクトに含まれるすべてのプロパティを指定します。

Out-Stringでは、InputObject パラメーターを使用して、$C変数に格納されている CultureInfo オブジェクトを指定します。 $C内のオブジェクトは文字列に変換されます。

Note

Out-String配列を表示するには、出力を変数に格納し、配列インデックスを使用して要素を表示します。 配列インデックスの詳細については、「 about_Arrays」を参照してください。

$str = Out-String -InputObject $C -Width 100

例 2: オブジェクトの操作

この例では、オブジェクトの使用と文字列の使用の違いを示します。 このコマンドは、Get-Commandのエイリアスであるテキスト gcm を含むエイリアスを表示します。

Get-Alias | Out-String -Stream | Select-String -Pattern "gcm"

Alias           gcm -> Get-Command

Get-Alias は、エイリアスごとに 1 つずつ、 System.Management.Automation.AliasInfo オブジェクトを取得し、そのオブジェクトをパイプラインに送信します。 Out-String では、 Stream パラメーターを使用して、すべてのオブジェクトを 1 つの文字列に連結するのではなく、各オブジェクトを文字列に変換します。 System.String オブジェクトはパイプラインに送信され、Select-StringPattern パラメーターを使用してテキスト gcm の一致を検索します。

Note

Stream パラメーターを省略すると、Select-Stringが返す 1 つの文字列でテキスト gcm が検索されるため、コマンドはすべてのエイリアスOut-String表示されます。

例 3: 切り捨てを防ぐには、Width パラメーターを使用します。

Out-Stringからのほとんどの出力は次の行にラップされますが、Out-Stringに渡される前に書式設定システムによって出力が切り捨てられるシナリオがあります。 Width パラメーターを使用して切り捨てを回避できます。

PS> @{TestKey = ('x' * 200)} | Out-String
Name                           Value
----                           -----
TestKey                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...

PS> @{TestKey = ('x' * 200)} | Out-String -Width 250

Name                           Value
----                           -----
TestKey                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

パラメーター

-InputObject

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

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-NoNewline

PowerShell フォーマッタによって生成された出力からすべての改行を削除します。 文字列オブジェクトの一部である改行は保持されます。

このパラメーターは、PowerShell 6.0 で導入されました。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Stream

既定では、 Out-String は、空白のヘッダーや末尾の改行を含め、コンソールに表示されるように書式設定された 1 つの文字列を出力します。 Stream パラメーターを使用すると、Out-Stringで各行を 1 つずつ出力できます。 これに対する唯一の例外は、複数行の文字列です。 その場合も、 Out-String は文字列を単一の複数行の文字列として出力します。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Width

出力の各行の文字数を指定します。 追加の文字は、使用されるフォーマッタ コマンドレットに応じて次の行にラップされるか、切り捨てられます。 Width パラメーターは、書式設定されているオブジェクトにのみ適用されます。 このパラメーターを省略した場合、ホスト プログラムの特性によって幅が決まります。 ターミナル (コンソール) ウィンドウでは、現在のウィンドウ幅が既定値として使用されます。 インストール時の PowerShell コンソール ウィンドウの既定の幅は 80 文字です。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

PSObject

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

出力

String

このコマンドレットは、入力オブジェクトから作成された文字列を返します。

メモ

Out動詞を含むコマンドレットは、オブジェクトの書式を設定しません。 Out コマンドレットは、指定した表示先のフォーマッタにオブジェクトを送信します。

PowerShell 7.2 では、ANSI エスケープ シーケンスのレンダリング方法を制御する機能が追加されました。 Out-Stringに渡される ANSI 修飾出力は、$PSStyle.OutputRendering プロパティの設定に基づいて変更できます。 詳細については、「 about_ANSI_Terminals」を参照してください。