Out-String

将输入对象输出为字符串。

语法

Out-String
   [-Width <Int32>]
   [-NoNewline]
   [-InputObject <PSObject>]
   [<CommonParameters>]
Out-String
   [-Stream]
   [-Width <Int32>]
   [-InputObject <PSObject>]
   [<CommonParameters>]

说明

cmdlet Out-String 将输入对象转换为字符串。 默认情况下,Out-String会累积字符串并将其作为单个字符串返回,但可以使用 Stream 参数直接Out-String一次返回一行或创建字符串数组。 此 cmdlet 用于在对象操作不太方便时像在传统 shell 中一样搜索和操作字符串输出。

示例

示例 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

变量 $C 存储 Selected.System.Globalization.CultureInfo 对象。 对象是将输出向下发送到 管道Select-Object的结果Get-CultureProperty 参数使用星号 (*) 通配符指定对象中包含的所有属性。

Out-String使用 InputObject 参数指定存储在 变量中的 $CCultureInfo 对象。 中的 $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 对象(每个别名对应一个),并向下发送对象。 Out-String使用 Stream 参数将每个对象转换为字符串,而不是将所有对象串联为单个字符串。 System.String 对象在管道中向下发送,并使用 Select-StringPattern 参数查找文本 gcm 的匹配项。

注意

如果省略 Stream 参数,则命令将显示所有别名,因为在Select-String返回的单个字符串Out-String中查找文本 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

指定要写入字符串的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-NoNewline

从 PowerShell 格式化程序生成的输出中删除所有换行符。 保留字符串对象中的换行符。

此参数是在 PowerShell 6.0 中引入的。

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

-Stream

默认情况下,输出一个格式的字符串, Out-String 如在控制台中看到的那样,包括任何空白标头或尾随换行符。 Stream 参数允许Out-String逐行输出。 唯一的例外是多行字符串。 在这种情况下, Out-String 仍将将字符串输出为单个多行字符串。

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

-Width

指定输出的每一行中的字符数。 任何其他字符将包装到下一行或截断,具体取决于所使用的格式化程序 cmdlet。 Width 参数仅适用于正在设置格式的对象。 如果省略此参数,则由主机程序的特征确定宽度。 在终端 (控制台) 窗口中,当前窗口宽度用作默认值。 安装时 PowerShell 控制台窗口的宽度默认为 80 个字符。

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

输入

PSObject

可以将对象向下发送到管道 Out-String

输出

String

Out-String 返回它从输入对象创建的字符串。

备注

包含谓词的 Out cmdlet 不会设置对象的格式。 cmdlet Out 将对象发送到指定显示目标的格式化程序。