当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Join-String (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:31 浏览:15 分类:玩电脑

Join-String (Microsoft.PowerShell.Utility)


Join-String

模块 :Microsoft.PowerShell.Utility

将管道中的对象组合成单个字符串。

句法

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 cmdlet 将管道对象中的文本连接或合并为单个字符串。

如果未指定参数,管道对象将转换为字符串并使用默认分隔符 $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-ChildItem 对象是 System.IO.DirectoryInfoJoin-String 将对象转换为 System.String

示例 2:使用属性子字符串连接目录名称

此示例使用 substring 方法获取目录名称的前四个字母,将输出用单引号括起来,并用分号 (;) 分隔目录名称。

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_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-StringSeparator 参数指定三个特殊字符,分别表示回车符 (`r)、换行符 (`n) 和制表符 ( `t)。 OutputPrefix 在输出的第一行之前插入一个带有新行和制表符的标签 Services:

有关特殊字符的更多信息,请参阅 about_Special_Characters。

示例 4:从对象创建类定义

此示例使用现有对象作为模板生成 PowerShell 类定义。

此代码示例使用展开来减少行长度并提高可读性。有关详细信息,请参阅 about_Splatting。

$obj = [pscustomobject] @{Name = "Joe"; Age = 42}
$parms = @{
  Property = "Name"
  FormatString = '  

参数

' OutputPrefix = "class {`n" OutputSuffix = "`n}`n" Separator = "`n" } $obj.PSObject.Properties | Join-String @parms class { $Name $Age }

-DoubleQuote

类型 :

将每个管道对象的字符串值用双引号引起来。

位置:

SwitchParameter

默认值:

命名

必需的:

False

接受管道输入:

False

接受通配符:

False

-FormatString

False

{0}

指定一个格式字符串,该字符串指定每个管道对象在连接之前应如何格式化。使用 {} 占位符表示当前对象。如果需要在格式化字符串中保留大括号 ({{),可以通过将大括号加倍(}}类型 :)。

有关详细信息,请参阅 String.Format 方法和复合格式。

位置:

String

默认值:

命名

必需的:

None

接受管道输入:

False

接受通配符:

False

-InputObject

False

类型 :

指定要连接的文本。输入包含文本的变量,或者键入命令或表达式以将对象连接到字符串中。

位置:

PS对象[]

默认值:

命名

必需的:

None

接受管道输入:

False

接受通配符:

True

-OutputPrefix

False

`r

在输出字符串之前插入的文本。该字符串可以包含特殊字符,例如回车符 (`n)、换行符 (`t) 和制表符 (类型 :)。

别名:

String

位置:

op

默认值:

命名

必需的:

None

接受管道输入:

False

接受通配符:

False

-OutputSuffix

False

`r

附加到输出字符串的文本。该字符串可以包含特殊字符,例如回车符 (`n)、换行符 (`t) 和制表符 (类型 :)。

别名:

String

位置:

os

默认值:

命名

必需的:

None

接受管道输入:

False

接受通配符:

False

-Property

False

类型 :

要转换为文本的属性名称或属性表达式。

位置:

PS属性表达式

默认值:

0

必需的:

None

接受管道输入:

False

接受通配符:

False

-Separator

False

$OFS

插入在每个管道对象的文本之间的文本或字符,例如逗号或分号。

默认情况下,管道对象在没有分隔符的情况下连接。如果设置了输出字段分隔符首选项变量 ($OFS),则将使用该值,除非指定此参数。

笔记

当您设置 $null 时,其值用于在数组转换为字符串时连接数组,直到变量重置为 $OFS。由于使用 Separator 可能会对代码中的其他位置产生意想不到的影响,因此最好改用 类型 : 参数。

位置:

String

默认值:

1

必需的:

None

接受管道输入:

False

接受通配符:

False

-SingleQuote

False

类型 :

将每个管道对象的字符串值用单引号引起来。

位置:

SwitchParameter

默认值:

命名

必需的:

False

接受管道输入:

False

接受通配符:

False

-UseCulture

False

(Get-Culture).TextInfo.ListSeparator

使用当前区域性的列表分隔符作为项目分隔符。要查找区域性的列表分隔符,请使用以下命令:类型 :

位置:

SwitchParameter

默认值:

命名

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

False

PSObject

输出

字符串

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯