Out-String

輸出輸入物件做為字串。

Syntax

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

Description

Cmdlet 會將 Out-String 輸入物件轉換成字串。 根據預設, Out-String 會累積字串並傳回為單一字串,但您可以使用 Stream 參數一次傳 Out-String 回一行,或建立字串陣列。 當物件操作較不方便時,此 Cmdlet 可讓您搜尋及操作字串輸出,就像在傳統殼層中一樣。

PowerShell 也會新增 OSS 函式,以速記方式呼叫 Out-String -Stream 管線中使用 Out-String

範例

範例 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 參數來指定儲存在變數中的 $C CultureInfo 物件。 中的 $C 物件會轉換成字串。

注意

若要檢視 Out-String 數位,請將輸出儲存至變數,並使用數位索引來檢視專案。 如需陣列索引的詳細資訊,請參閱 about_Arrays

$str = Out-String -InputObject $C -Width 100

範例 2:使用物件

此範例示範使用 物件與使用字串之間的差異。 這個指令會顯示包含 text 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中找到 text 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

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

String

這個 Cmdlet 會傳回它從輸入物件建立的字串。

備註

包含動詞命令的 Out Cmdlet 不會格式化物件。 Cmdlet 會將 Out 物件傳送至指定之顯示目的地的格式器。

PowerShell 7.2 新增了控制 ANSI 逸出序列轉譯方式的功能。 傳遞至 Out-String 的 ANSI 裝飾輸出可以根據 屬性的 $PSStyle.OutputRendering 設定來改變。 如需詳細資訊,請參閱 about_ANSI_Terminals