PowerShellでコンソール操作を行います。
画面をクリアします。
[Console]::Clear()
コンソールウインドウのタイトルを設定または、取得を行います。
$title = [Console]::Title # コンソールウインドウのタイトル取得
[Console]::Title = "コンソールのテスト" # コンソールウインドウのタイトル設定
コンソールに文字を表示します。
[Console]::Write("日本")
[Console]::WriteLine("千葉県")
Write-Host "文字を表示"
Write-Output "powershell"
Writeは、表示後改行しません。WriteLine, Write-Host、Write-Outputは、表示後改行します。
Write-Outputは、オブジェクトをパイプラインの次のコマンドに渡します。パイプラインが省略されている場合はコンソールに表示されます。
書式指定による表示例
# format.ps1
# 複合書式指定
[Console]::WriteLine("{0,12:#.000}", 12345.67) # 12345.670 小数点以下3桁
[Console]::WriteLine("{0,8:C}", 12345) # \12,345 通貨
[Console]::WriteLine("{0,8:X}(HEX)", 12345) # 3039 16進
# 書式演算子による書式指定
Write-OutPut("{0,10:#.0}" -f 12345.67) # 12345.7 小数点以下1桁
Write-Host("{0,8:#}" -f 12345.67) # 12346 整数
複合書式指定
書式演算子 -f [書式 -f オブジェクト1, オブジェクト2.....] .NET String.Format
Write-Host のカッコ有り無し動作の違い
・Read-Host キー入力された1行分の文字列を読み取ります。
$sr = Read-Host "キー入力して下さい。"
Enterキーで入力文字列を読み取ります。戻り値:キー入力された文字列。
・ReadLine キー入力された1行分の文字列を読み取ります。
$srt = [Console]::ReadLine()
Enterキーで入力文字列を読み取ります。戻り値:キー入力された文字列。ISEでは入力待ちとなりません。
・Read キー入力された1文字を読み取ります。
# Console.Read の例
while($true){
$ia = [Console]::Read()
if ($ia -eq 10 -or $ia -eq 13){
continue
}
[char]$ca = $ia
[Console]::WriteLine("{0,4:G} {1,3:X} {2}", $ia, $ia, $ca)
if ($ca -eq "q"){
break;
}
}
戻り値: Int32 キー入力された文字コード
Enterキーで入力された1文字を読み取ります。データがない場合は入力待ちとなります。すでにデータがある場合は文字を読み取ります。
上記プログラムは、コンソールウインドウで実行して下さい。ISEでは、エラーとなります。
押された文字キー、ファンクションキーを取得します。
$key = [Console]::ReadKey($false) # or $key = [Console]::ReadKey()
$key = [Console]::ReadKey($true)
押されたキーを取得します。
引数 $false または指定なし:押されたキーを表示します。 $true:押されたキーを表示しません。
戻り値: ConsoleKeyInfo オブジェクト
Key | 取得したコンソールキー ConsoleKey |
KeyChar | 取得したUnicode文字 |
Modifiers | 同時に押される 1 つ以上の修飾子キー |
# Readkey.ps1
while($true){
$key = [Console]::ReadKey($false)
[Console]::WriteLine(" Key:{0} keyChar:{1} Modifiers:{2}", $key.Key, $key.KeyChar, $key.Modifiers)
if ($key.Key -eq "Q"){
break
}
}
実行例 上記プログラムは、コンソールウインドウで実行して下さい。ISEでは、エラーとなります。
キーが押されたかどうかの値を取得します。 プロパティ
$br = [Console]::KeyAvailable
押されたキーが入力ストリームに存在するかどうかを示す値を取得します。
戻り値: true:存在する false:それ以外
表示文字、バック色の設定を行います。ConsoleColor列挙体の値または、数値で指定します。
# バック色の設定
[Console]::BackgroundColor = [ConsoleColor]::Yellow # ConsoleColorの列挙体で指定
[Console]::BackgroundColor = 14 # 数値で指定
# 文字色の設定
[Console]::ForegroundColor = [ConsoleColor]::Black # ConsoleColorの列挙体で指定
[Console]::ForegroundColor = 0 # 数値で指定
下記プログラムは、ConsoleColor列挙体の全色表示を行います。実行はコンソールウインドウで行って下さい。
# consColor.ps1
$currentBackground = [Console]::BackgroundColor
$currentForeground = [Console]::ForegroundColor
$colors = [ConsoleColor]::GetValues([ConsoleColor]); # 定数値配列の取得
$il = $colors.Count
for($ia = 0; $ia -lt $il; $ia++){
[Console]::Write("{0,2:D}", $ia)
[Console]::Write(" ")
[Console]::BackgroundColor = $colors[$ia]
[Console]::Write(" ")
[Console]::BackgroundColor = $currentBackground
[Console]::Write(" ")
Write-Host $colors[$ia]
}
[Console]::ResetColor()
Write-Host
上記プログラムの実行結果
カーソルの位置を指定します。
[Console]::SetCursorPosition(int left, int top)
left:列の位置 列は、左から右に向かって、0から始まる番号
top:行の位置 行は、上から下に向かって、0から始まる番号