コマンドレット説明書【Get-Host】の使い方 (PowerShell v5.1)

こんにちは。チェシャ男です。(-皿-)

今回は、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 *」を実行します。

コメントを残す

メールアドレスが公開されることはありません。