共用方式為


Join-String

將管線中的物件合併成單一字串。

Syntax

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>]

Description

Cmdlet 會 Join-String 聯結或結合管線物件中的文字成單一字串。

如果未指定任何參數,管線物件會轉換成字串,並以預設分隔符 $OFS聯結。

注意

當您設定 $OFS 其值時,會用來將數位轉換成字串,直到變數重設為 $null為止。 因為 使用 $OFS 可能會有程序代碼中其他位置的意外效果,所以最好改用 Separator 參數。

藉由指定屬性名稱,屬性的值會轉換成字串,並聯結至字元串。

您可以使用文稿區塊,而不是屬性名稱。 腳本區塊的結果會先轉換成字串,再聯結以形成結果。 它可以結合物件屬性的文字,或轉換成字串之對象的結果。

此 Cmdlet 是在 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-StringProperty 參數會指定目錄名稱。 DoubleQuote 參數會以雙引號包裝目錄名稱。 Separator 參數會指定使用逗號和空格 () , 分隔目錄名稱。

物件 Get-ChildItemSystem.IO.DirectoryInfo ,並將 Join-String 對象轉換成 System.String

範例 2:使用屬性子字串來聯結目錄名稱

本範例使用子字串方法來取得目錄名稱的前四個字母、以單引號包裝輸出,並以分號分隔目錄名稱 (;) 。

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 屬性子字串。 子字串會取得每個目錄名稱的前四個字母。 子字串會指定字元開始和結束位置。 SingleQuote 參數會以單引號包裝目錄名稱。 Separator 參數會指定使用分號 () ; 分隔目錄名稱。

如需自動變數和子字串的詳細資訊,請參閱 about_Automatic_VariablesSubstring

範例 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*的服務。 星號 () * 是任何字元的通配符。

物件會向下傳送至 Join-String 管線,該管線會使用 Property 參數來指定服務名稱。 Separator 參數指定三個特殊字元,代表歸位字元 () `r 、換行字元 () `n ,以及製表元 (`t) 。 OutputPrefix 會在輸出的第一行之前插入具有新行和索引標籤的標籤Services:

如需特殊字元的詳細資訊,請參閱 about_Special_Characters

範例 4:從 物件 Create 類別定義

此範例會使用現有的 對象作為範本來產生 PowerShell 類別定義。

此程式代碼範例會使用splatting來減少行長度,並改善可讀性。 如需詳細資訊,請參閱 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

以雙引號包裝每個管線物件的字串值。

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

-FormatString

指定格式字串,指定每個管線對象在聯結之前應該如何格式化。 {0}使用佔位元來表示目前的物件。 如果您需要在格式化字串中保留大括弧 ({}) ,您可以將大括號 ({{}}) 加倍,以逸出它們。

如需詳細資訊,請參閱 String.Format 方法和 複合格式

Type:String
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

-OutputPrefix

在輸出字串之前插入的文字。 字串可以包含特殊字元,例如歸位字元 () `r 、換行字元 () `n ,以及製表符 (`t) 。

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

-OutputSuffix

附加至輸出字串的文字。 字串可以包含特殊字元,例如歸位字元 () `r 、換行字元 () `n ,以及製表符 (`t) 。

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

-Property

要轉換成文字的屬性名稱或屬性表達式。

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

-Separator

在每一個管線物件的文字之間插入的逗號或分號之類的文字或字元。

根據預設,管線對象會聯結,而不需要分隔符。 如果已設定輸出 欄位分隔符 喜好設定變數 ($OFS) ,除非指定此參數,否則會使用該值。

注意

當您設定 $OFS 其值時,會用來將數位轉換成字串,直到變數重設為 $null為止。 因為 使用 $OFS 可能會有程序代碼中其他位置的意外效果,所以最好改用 Separator 參數。

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

-SingleQuote

以單引號包裝每個管線物件的字串值。

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

-UseCulture

使用目前文化特性的清單分隔符做為專案分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令: (Get-Culture).TextInfo.ListSeparator

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

輸入

PSObject

輸出

String