Join-String
パイプラインのオブジェクトを 1 つの文字列に結合します。
構文
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-SingleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-DoubleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-FormatString <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
説明
Join-String
コマンドレットは、パイプライン オブジェクトのテキストを 1 つの文字列に結合または結合します。
パラメーターが指定されていない場合、パイプライン オブジェクトは文字列に変換され、既定の区切り記号 $OFS
で結合されます。
Note
$OFS
設定すると、変数が$null
にリセットされるまで、配列が文字列に変換されるときに、その値を使用して配列が結合されます。 $OFS
を使用すると、コード内の他の場所で意図しない効果が発生する可能性があるため、代わりに Separator パラメーターを使用することをお勧めします。
プロパティ名を指定すると、プロパティの値が文字列に変換され、文字列に結合されます。
プロパティ名の代わりに、スクリプト ブロックを使用できます。 スクリプト ブロックの結果は、結合して結果を形成する前に文字列に変換されます。 オブジェクトのプロパティのテキストまたは文字列に変換されたオブジェクトの結果を組み合わせることができます。
このコマンドレットは、PowerShell 6.2 で導入されました。
例
例 1: ディレクトリ名を結合する
次の使用例は、ディレクトリ名を結合し、出力を二重引用符で囲み、ディレクトリ名をコンマとスペース (,
) で区切ります。 出力は文字列オブジェクトです。
Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '
"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"
Get-ChildItem
では、 Directory パラメーターを使用して、 C:\
ドライブのすべてのディレクトリ名を取得します。
オブジェクトはパイプラインに送信され、 Join-String
されます。 Property パラメーターは、ディレクトリ名を指定します。 DoubleQuote パラメーターは、ディレクトリ名を二重引用符で囲みます。
Separator パラメーターは、ディレクトリ名を区切るためにコンマとスペース (,
) を使用するように指定します。
Get-ChildItem
オブジェクトは System.IO.DirectoryInfo で、オブジェクトを System.String に変換Join-String
。
例 2: プロパティ部分文字列を使用してディレクトリ名を結合する
この例では、substring メソッドを使用してディレクトリ名の最初の 4 文字を取得し、出力を一重引用符で囲み、ディレクトリ名をセミコロン (;
) で区切ります。
Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'
'Perf';'Prog';'Prog';'User';'Wind'
Get-ChildItem
では、 Directory パラメーターを使用して、 C:\
ドライブのすべてのディレクトリ名を取得します。
オブジェクトはパイプラインに送信され、 Join-String
されます。
Property パラメーター スクリプト ブロックは、自動変数 ($_
) を使用して、各オブジェクトの Name プロパティ部分文字列を指定します。 部分文字列は、各ディレクトリ名の最初の 4 文字を取得します。 部分文字列は、文字の開始位置と終了位置を指定します。 SingleQuote パラメーターは、ディレクトリ名を一重引用符で囲みます。 Separator パラメーターは、セミコロン (;
) を使用してディレクトリ名を区切ります。
自動変数と部分文字列の詳細については、「 about_Automatic_Variables と Substring」を参照してください。
例 3: 結合出力を別の行に表示する
次の使用例は、サービス名を各サービスと個別の行に結合し、タブでインデントします。
Get-Service -Name se* | Join-String -Property Name -Separator "`r`n`t" -OutputPrefix "Services:`n`t"
Services:
seclogon
SecurityHealthService
SEMgrSvc
SENS
Sense
SensorDataService
SensorService
SensrSvc
SessionEnv
Get-Service
では、 Name パラメーターを使用して、 se*
で始まるサービスを指定します。 アスタリスク (*
) は、任意の文字のワイルドカードです。
オブジェクトは、Property パラメーターを使用してサービス名を指定するJoin-String
にパイプラインに送信されます。 Separator パラメーターは、復帰 (`r
)、改行 (`n
)、タブ (`t
) を表す 3 つの特殊文字を指定します。 OutputPrefixは、出力の最初の行の前に新しい行とタブを含むラベル Services:
を挿入します。
特殊文字の詳細については、「 about_Special_Characters」を参照してください。
例 4: オブジェクトからクラス定義を作成する
この例では、既存のオブジェクトをテンプレートとして使用して PowerShell クラス定義を生成します。
このコード サンプルでは、スプラッティングを使用して行の長さを減らし、読みやすさを向上させます。 詳細については、「 about_Splatting」を参照してください。
$obj = [pscustomobject] @{Name = "Joe"; Age = 42}
$parms = @{
Property = "Name"
FormatString = ' ${0}'
OutputPrefix = "class {`n"
OutputSuffix = "`n}`n"
Separator = "`n"
}
$obj.PSObject.Properties | Join-String @parms
class {
$Name
$Age
}
パラメーター
-DoubleQuote
各パイプライン オブジェクトの文字列値を二重引用符で囲みます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FormatString
各パイプライン オブジェクトを結合する前に書式設定する方法を指定する書式指定文字列を指定します。 現在のオブジェクトを表すには、 {0}
プレースホルダーを使用します。 書式設定された文字列に中かっこ ({}
) を保持する必要がある場合は、中かっこ ({{
と }}
) を 2 倍にすることでエスケープできます。
詳細については、 String.Format メソッドと Composite Formattingを参照してください。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
結合するテキストを指定します。 テキストを含む変数を入力するか、文字列に結合するオブジェクトを取得するコマンドまたは式を入力します。
型: | PSObject[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-OutputPrefix
出力文字列の前に挿入されるテキスト。 文字列には、復帰 (`r
)、改行 (`n
)、タブ (`t
) などの特殊文字を含めることができます。
型: | String |
Aliases: | op |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-OutputSuffix
出力文字列に追加されるテキスト。 文字列には、復帰 (`r
)、改行 (`n
)、タブ (`t
) などの特殊文字を含めることができます。
型: | String |
Aliases: | os |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Property
テキストに変換するプロパティまたはプロパティ式の名前。
型: | PSPropertyExpression |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Separator
各パイプライン オブジェクトのテキストの間に挿入されるテキストまたはコンマやセミコロンなどの文字。
既定では、パイプライン オブジェクトは区切り記号なしで結合されます。 Output フィールド区切り記号ユーザー設定変数 ($OFS
) が設定されている場合は、このパラメーターを指定しない限り、その値が使用されます。
Note
$OFS
設定すると、変数が$null
にリセットされるまで、配列が文字列に変換されるときに、その値を使用して配列が結合されます。 $OFS
を使用すると、コード内の他の場所で意図しない効果が発生する可能性があるため、代わりに Separator パラメーターを使用することをお勧めします。
型: | String |
配置: | 1 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SingleQuote
各パイプライン オブジェクトの文字列値を一重引用符で囲みます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UseCulture
現在のカルチャのリスト区切り記号を項目区切り記号として使用します。 カルチャのリスト区切り記号を検索するには、次のコマンドを使用します: (Get-Culture).TextInfo.ListSeparator
。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
出力
関連リンク
PowerShell