次の方法で共有


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

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

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

手記

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

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

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

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

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

Alias           gcm -> Get-Command

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

手記

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

例 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を参照してください。