Join-String
將管線中的物件合併成單一字串。
語法
Default (預設值)
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
SingleQuote
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-SingleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
DoubleQuote
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-DoubleQuote]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Format
Join-String
[[-Property] <PSPropertyExpression>]
[[-Separator] <String>]
[-OutputPrefix <String>]
[-OutputSuffix <String>]
[-FormatString <String>]
[-UseCulture]
[-InputObject <PSObject[]>]
[<CommonParameters>]
Description
Join-String Cmdlet 聯結或結合管線物件中的文字成單一字串。
如果未指定任何參數,管線物件會轉換成字串,並與預設分隔符聯結 $OFS。
備註
當您設定 $OFS 當數位轉換成字串時,會使用其值聯結數位,直到變數重設為 $null為止。 因為使用 $OFS 在程序代碼中其他地方可能會有非預期的效果,所以最好改用 分隔符 參數。
藉由指定屬性名稱,屬性的值會轉換成字串,並聯結至字元串。
您可以使用文稿區塊,而不是屬性名稱。 腳本區塊的結果會先轉換成字串,再聯結以形成結果。 它可以結合物件屬性的文字或轉換成字串之對象的結果。
此 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-String。
屬性 參數會指定目錄名稱。
DoubleQuote 參數會以雙引號包裝目錄名稱。
分隔符 參數會指定使用逗號和空格(, )來分隔目錄名稱。
Get-ChildItem 物件 System.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 參數會以單引號包裝目錄名稱。
分隔符 參數會指定使用分號 (;) 來分隔目錄名稱。
如需自動變數和子字串的詳細資訊,請參閱 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*開頭的服務。 星號 (*) 是任何字元的通配符。
物件會向下傳送至使用 Join-String 參數來指定服務名稱的管線 。
分隔符 參數指定三個特殊字元,代表歸位字元(`r)、換行符(`n),以及製表元(`t)。
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 |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
DoubleQuote
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-FormatString
指定格式字串,指定每個管線對象在聯結之前應如何格式化。 使用 {0} 佔位符來代表目前的物件。 如果您需要將大括號({})保留在格式化字串中,您可以藉由將大括號({{ 和 }})加倍來逸出它們。
如需詳細資訊,請參閱 String.Format 方法和 複合格式。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Format
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定要聯結的文字。 輸入包含文字的變數,或輸入命令或表達式,以取得要聯結至字元串的物件。
參數屬性
| 類型: | PSObject[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-OutputPrefix
在輸出字串之前插入的文字。 字串可以包含特殊字元,例如歸位字元(`r)、換行符(`n),以及製表元(`t)。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | op |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-OutputSuffix
附加至輸出字串的文字。 字串可以包含特殊字元,例如歸位字元(`r)、換行符(`n),以及製表元(`t)。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | os |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Property
要轉換成文字的屬性名稱或屬性表達式。
參數屬性
| 類型: | PSPropertyExpression |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Separator
在每個管線物件的文字之間插入的逗號或分號等文字或字元。
根據預設,管線對象會聯結而不使用分隔符。 如果已設定 輸出字段分隔符 喜好設定變數($OFS),除非指定此參數,否則會使用該值。
備註
當您設定 $OFS 當數位轉換成字串時,會使用其值聯結數位,直到變數重設為 $null為止。 因為使用 $OFS 在程序代碼中其他地方可能會有非預期的效果,所以最好改用 分隔符 參數。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 1 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SingleQuote
以單引號包裝每個管線物件的字串值。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
SingleQuote
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-UseCulture
使用針對目前文化環境的清單分隔符作為項目分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令:(Get-Culture).TextInfo.ListSeparator。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。