こんにちは。チェシャ男です。(-皿-)
今回は、Get-Host について概要から使用例について簡単にご紹介します。
「コマンドレットリファレンス」カテゴリの記事では省略している情報を参照したい場合に本記事をご覧ください。
もくじ
はじめに
本記事は英語のリファレンス情報しかないコマンドレットについて「Get-Help」等の情報を参考に検証した結果を掲載しています。公式見解ではないことにご注意ください。
正式なヘルプを参照したい場合は、「Get-help Get-Host -online」を実行し公式ヘルプをご覧ください。
また、本記事内の例は動作を確認していますが、動作を確約しているわけではありません。
Get-Host の概要
Get-Host では、実行中の PowerShell のホストとなるプログラムについて情報を取得します。(バージョンや地域情報など)
[blogcard url=”https://cheshire-wara.com/powershell/ps-cmdlets/system-service/how-to-check-psversion/”]基本の構文
#パターン① Get-Host [<CommonParameters>]
[] で囲まれたパラメーターは任意のオプションです。
動作の説明
Get-Host コマンドレットでは、PowerShell のホストとなっているプログラム(のオブジェクト)情報を取得します。デフォルトでは、Windows PowerShell の「バージョン番号」やホストが使用中の「地域と言語」の設定が表示されています。
Get-Host で取得できるホストに関する情報の中には、
- 実行中の Windows PowerShell のバージョン
- Windows PowerShell の現在のカルチャとUIカルチャに関する詳細
など豊富な情報が含まれています。
カルチャとは .NET Framework において
使用される言語
数値・日時・通貨などの書式
年号・暦
といったロケールに関する情報の事です。
さらに、Get-Host コマンドレットを使用してコンソール画面のユーザーインターフェイスの機能(テキストや背景色など)をカスタマイズすることもできます。
各パラメータについて
<CommonParameters>
このコマンドレットは、
Verbose、debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、OutBuffer、PipelineVariable、OutVariable
の各共通パラメーターを使用することができます。
入力値
なし
(入力をこのコマンドレットにパイプすることはできません。)
出力
System.Management.Automation.Internal.Host.InternalHost
備考
$Host の自動変数には、Get-Hostの戻り値と同じオブジェクトが格納されています。$Host でGet-Host を代替することができます。
同様に、$PSCulture および $PSUICulture 自動変数には、Get-Host の戻り値となるオブジェクトの「CurrentCulture」および「CurrentUICulture」プロパティと同じ情報が格納されています。
使用例
例1:PowerShell コンソールホストに関する情報を取得する
PS C:\>Get-Host Name : ConsoleHost Version : 5.0.10586.117 InstanceId : a85dc0cc-113c-445f-b57b-2fe7cd18dc28 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : ja-JP CurrentUICulture : ja-JP PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace
この例では、現在実行中の PowerShell ホストのコンソールに関する情報を表示します。
ホスト、 PowerShell のバージョン、現在のカルチャとUI などが表示されています。
「Version」「UI」「CurrentCulture」「CurrentUICulture」「PrivateData」「Runspace」といった各プロパティには、便利なプロパティを持ったオブジェクトが格納されています。
例2:PowerShell ウィンドウのサイズを変更する
PS C:\> $H = Get-Host PS C:\> $H Name : ConsoleHost Version : 5.0.10586.117 InstanceId : a85dc0cc-113c-445f-b57b-2fe7cd18dc28 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : ja-JP CurrentUICulture : ja-JP PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\> $Win = $H.UI.RawUI.WindowSize PS C:\> $Win Width Height ----- ------ 110 28 PS C:\> $Win.Height = 30 PS C:\> $Win.Width = 60 PS C:\> $H.UI.RawUI.Set_WindowSize($Win) PS C:\> PS C:\> $H.UI.RawUI.WindowSize Width Height ----- ------ 60 30
この例では、PowerShell コンソールのウィンドウサイズを 30 x 60 ピクセルに変更しています。
実行するとコンソールウィンドウの大きさが突然変わるので驚かないよう注意してください。 笑
同様の手法を用いることで、PowerShell コンソールのウィンドウのタイトルバーの表示も変えることができるようです!
例3:PowerShell バージョンを取得する
PS C:\>(Get-Host).Version | Format-List -Property * Major : 5 Minor : 0 Build : 10586 Revision : 117 MajorRevision : 0 MinorRevision : 117
この例では、実行されている PowerShell のバージョンに関する情報の詳細を取得します。(これらの値は表示できますが変更することはできません。)
Get-Host で取得できるオブジェクトの Version プロパティには、「System.Version」オブジェクトが格納されています。
また、パイプライン演算子(|)を使用して、System.Version オブジェクトを Format-List コマンドレットに渡しています。Property パラメータに「” * ”(すべての値)」を指定して、System.Version オブジェクトのプロパティについて全ての情報を表示しています。
例4:現在のカルチャを取得する
PS C:\> (Get-Host).CurrentCulture | Format-List -Property * Parent : ja LCID : 1041 KeyboardLayoutId : 1041 Name : ja-JP IetfLanguageTag : ja-JP DisplayName : 日本語 (日本) NativeName : 日本語 (日本) EnglishName : Japanese (Japan) TwoLetterISOLanguageName : ja ThreeLetterISOLanguageName : jpn ThreeLetterWindowsLanguageName : JPN CompareInfo : CompareInfo - ja-JP TextInfo : TextInfo - ja-JP IsNeutralCulture : False CultureTypes : SpecificCultures, InstalledWin32Cultures, FrameworkCultures NumberFormat : System.Globalization.NumberFormatInfo DateTimeFormat : System.Globalization.DateTimeFormatInfo Calendar : System.Globalization.GregorianCalendar OptionalCalendars : {System.Globalization.GregorianCalendar, System.Globalization.JapaneseCalendar, System.Globalization.GregorianCalendar} UseUserOverride : True IsReadOnly : False
この例では、実行されている PowerShell のカルチャに関する詳細情報を取得しています。Get-Culture コマンドレットによって取得できる結果と同じ情報が含まれています。
CurrentCulture プロパティには、「System.Globalization.CultureInfo」オブジェクトが格納されています。
ちなみに、CurrentUICulture プロパティには、Get-UICulture コマンドレットによって取得できる結果と同じ情報が含まれています。
例5:現在のカルチャの DateTimeFormat を取得する
PS C:\> (Get-Host).CurrentCulture.DateTimeFormat | Format-List -Property * AMDesignator : 午前 Calendar : System.Globalization.GregorianCalendar DateSeparator : / FirstDayOfWeek : Sunday CalendarWeekRule : FirstDay FullDateTimePattern : yyyy'年'M'月'd'日' H:mm:ss LongDatePattern : yyyy'年'M'月'd'日' LongTimePattern : H:mm:ss MonthDayPattern : M'月'd'日' PMDesignator : 午後 RFC1123Pattern : ddd, dd MMM yyyy HH':'mm':'ss 'GMT' ShortDatePattern : yyyy/MM/dd ShortTimePattern : H:mm SortableDateTimePattern : yyyy'-'MM'-'dd'T'HH':'mm':'ss TimeSeparator : : UniversalSortableDateTimePattern : yyyy'-'MM'-'dd HH':'mm':'ss'Z' YearMonthPattern : yyyy'年'M'月' AbbreviatedDayNames : {日, 月, 火, 水...} ShortestDayNames : {日, 月, 火, 水...} DayNames : {日曜日, 月曜日, 火曜日, 水曜日...} AbbreviatedMonthNames : {1, 2, 3, 4...} MonthNames : {1月, 2月, 3月, 4月...} IsReadOnly : False NativeCalendarName : 西暦 (日本語) AbbreviatedMonthGenitiveNames : {1, 2, 3, 4...} MonthGenitiveNames : {1月, 2月, 3月, 4月...}
この例では、現在のカルチャにおける「DateTimeFormat」プロパティに関する詳細情報を取得しています。Get-Host で取得できるオブジェクトの「CurrentCulture」プロパティには「CultureInfo」オブジェクトが含まれいて、このオブジェクトには有用なプロパティが多く含まれています。
その中で、DateTimeFormat プロパティには、多くの便利なプロパティを持つDateTimeFormatInfo オブジェクトが含まれています。
オブジェクトに格納されているプロパティの種類は、Get-Member コマンドレットを使用することでを調べることができます。
例6:ホストの RawUI プロパティを取得する
PS C:\> (Get-Host).UI.RawUI | Format-List -Property * ForegroundColor : White BackgroundColor : DarkBlue CursorPosition : 0,289 WindowPosition : 0,260 CursorSize : 25 BufferSize : 110,290 WindowSize : 84,30 MaxWindowSize : 110,46 MaxPhysicalWindowSize : 174,46 KeyAvailable : False WindowTitle : 管理者: Windows PowerShell
この例では、実行中の PowerShell コンソールの「RawUI」プロパティについての情報を表示しています。
例1のように、これらの値を変更することでコンソールウィンドウの色や大きさなどを変更することができます。
例7:PowerShell コンソールの背景色を設定する
PS C:\> (Get-Host).UI.RawUI.BackgroundColor = "Black" PS C:\> cls
この例では、PowerShell コンソールの背景色を変更しています。また、clsコマンド(Clear-Host のエイリアス)で画面を一旦クリアして、画面全体を新しい色に変更しています。
この変更は実行中のセッションでのみ有効です。 すべてのセッションでコンソールの背景色を変更するには、PowerShell のプロファイル ($PROFILE) にコマンドを追加します。
例8:エラーメッセージの背景色を設定する
PS C:\> $Host.PrivateData.ErrorBackgroundColor = "white"
この例では、エラーメッセージの背景色を変更しています。今回は Get-Host と同じオブジェクト情報を含む $Host 自動変数を使用しています。
ErrorBackgroundColor を変更するために、$Host の「PrivateData」プロパティを使用します。「$Host.PrivateData」プロパティのオブジェクトについて表示するには、「$Host.PrivateData | Format-List *」を実行します。