Hey, Scripting Guy!

Scripting Guys が皆さんの質問にお答えします

Hey, Scripting Guy!

TechNet コラムへようこそ。このコラムでは、よく寄せられるシステム管理スクリプトに関する質問に Scripting Guys がお答えします。システム管理スクリプトについて質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。

細情報

Hey, Scripting Guy! カテゴリ別アーカイブ

Hey, Scripting Guy! 日付別アーカイブ

Hey, Scripting Guy! ダウンロード (英語)

Spacer

*

Windows PowerShell コンソールの幅を広げる方法はありますか

Hey, Scripting Guy! Question

Scripting Guy さん、よろしくお願いします。Windows PowerShell コンソールの幅を広げる方法はありますか。イベント ログなど、特定の種類のデータを表示するとき、コンソール ウィンドウの幅が狭いため、データが切れてしまいます。

-- TB

SpacerHey, Scripting Guy! AnswerScript Center

TB さん、こんにちは。おっと、偶然の一致ですね。まさにその質問を "あなた" にたずねようとしていました。どうすればいいしょうか。

いえ、冗談です。Scripting Guys は決してだれにも助けを求めません。ヘルプを使えなかったというのではありませんよ、念のため。Microsoft で働いていると、決して人に質問してはいけないことがすぐにわかる、というだけです。

間違った答えが返ってくるからでしょうか。それならいいのです。間違った答えでも、少なくとも答えです。そうではありません。Microsoft の人に質問すると、答える代わりに、その問題について話し合う会議が設定されます。その後、オフィスに戻り、自分の上司やあなたの上司 (そして、その上司の上司全員と "彼らの" 上司) に質問が通知され、多数の "主要利害関係者" がこの突然の重要会議に出席するよう求められます。

そして、この会議の開始時間が午後 6 時というとんでもない時間だったりするのです (午後 6 時に働きたい人なんていますか)。そして、もちろん、実際には会議の "スケジュール" は立てません。全員に "Sched+" が送信されます。Sched+ とは、最後に使用されたのが 1847 年の Microsoft 製品 (Schedule+) です。しかし、思い出は長く尾を引いています。

: 良い質問です。主要利害関係者とは "一体" なんでしょうか。おわかりかもしれませんが、会議に出席することに同意しながら、姿を現そうともしなかったら、その人は主要利害関係者です。そして、主要利害関係者が出席するまで決定には至らないため、彼らの必然的な欠席は、この後にも "常に" 別の会議が予定されることを意味します。ギリシャ神話のシシュフォスを覚えていますか。丘の頂上まで岩を転がしながら、頂上にたどり着く直前に、岩が転がり落ちてしまうため、また最初からやり直さなければならないという永劫の罰を受けた王様です。このコラムを書いている Scripting Guy の部屋の廊下の先にシシュフォスのオフィスがあります。

会議が何度か延期され、いくつかの会議室を転々とした後、ついに全員が顔を揃えます。議題はただ 1 つ。一歩踏み込んで、別の会議を設定するかどうか、です。このような出だしのつまずきを何度か繰り返した後、最終的に主要利害関係者に "行動項目" を割り当てる "仮想チーム" が設置されます (Microsoft では、たくさん引用符を使いますよね)。それから数か月をかけて、質問の最適な解決法についての方針と手順を策定します。そして、回答を考え出す準備ができる直前になって、結局この質問は自分たちの "もの" ではないと決定し、他の人が回答するべきだという点で合意します。

そのとおりです。最初の質問が「トイレはどこですか」でなかったことを祈りましょう。

しかし、あなたが Scripting Guys に質問するときは、話は別です。たしかに、回答しない可能性はあります。でも、少なくとも事務処理や会議はありません。

$pshost = get-host 
$pswindow = $pshost.ui.rawui 
 
$newsize = $pswindow.buffersize 
$newsize.height = 3000 
$newsize.width = 150 
$pswindow.buffersize = $newsize 
 
$newsize = $pswindow.windowsize 
$newsize.height = 50 
$newsize.width = 150 
$pswindow.windowsize = $newsize

先に進む前に、Windows PowerShell コンソール ウィンドウのサイズを変更するためにスクリプトを使用する必要は "ない" ことを言っておかなければなりません。次の方法で変更できます。

1.

Windows PowerShell を起動します。

2.

タイトル バーの左上隅にあるアイコンを右クリックし、[プロパティ] をクリックします。

3.

[レイアウト] タブの [ウィンドウのサイズ] で希望の幅を設定します。

4.

[OK] をクリックします。

これでうまくいきます。しかし、そのとおりですね。少なくともスクリプト作成に関するコラムとしては "確かに" 退屈です。そこで、現在の Windows PowerShell コンソールのサイズをプログラムで変更する方法を紹介しました。さらに特典として、このコラムを終わる前にウィンドウのタイトルと色を変更する方法も紹介しましょう。

お礼は必要ありません。主要利害関係者の Scripting Guys が同意した行動項目だったことが判明したのです。

スクリプトでは、まず、Windows PowerShell コンソール オブジェクトへのオブジェクト参照 ($pshost) を作成します。これは、Get-Host Cmdlet を呼び出して行います。

$pshost = get-host

次に、下のコード行を使用して、コンソールの UI.RawUI 子オブジェクトへの参照を作成します。

$pswindow = $pshost.ui.rawui

ここで、少し迂回する必要があります。テスト コンピュータでは、Windows PowerShell 画面の幅とバッファ サイズはどちらも 120 に設定されています。何か問題があるでしょうか。はい、あります。画面の幅をバッファ サイズより大きくすることはできません。したがって、ウィンドウ サイズを広げる前に、バッファ サイズを増やす必要があります。次のコード ブロックで、この処理を行っています。

$newsize = $pswindow.buffersize 
$newsize.height = 3000 
$newsize.width = 150 
$pswindow.buffersize = $newsize

少しややこしいですが、ここでは、メモリに真新しいバッファ サイズを構築し、その仮想バッファのプロパティを実際のコンソール ウィンドウに適用しています。それには、まず、BufferSize プロパティを $newsize という変数に割り当てます。

$newsize = $pswindow.buffersize

その後、バッファ サイズの高さ (既定値 3000 行) と幅 (150 文字) の値を設定します。次に、下の行を使用して、これらの値を実際のコンソール ウィンドウに割り当てます。

$pswindow.buffersize = $newsize

バッファ サイズを調整したところで、WindowSize プロパティでこのプロセスを繰り返し、新しいウィンドウの高さを 50 行、幅を 150 文字にします。

$newsize = $pswindow.windowsize 
$newsize.height = 50 
$newsize.width = 150 
$pswindow.windowsize = $newsize

スクリプトを実行すると、Windows PowerShell ウィンドウのサイズが即座に変化します (ただし、この効果は一時的である点に注意してください。このセッションを終了して再起動すると、ウィンドウは前のサイズに戻ります。ウィンドウのサイズを永続的に変更するには、まず UI を使用してウィンドウのプロパティを変更する方法があります。または、このスクリプトを PowerShell プロファイルに入れます)。

では、約束どおり、コンソール ウィンドウのタイトルを My PowerShell Session に、前景色と背景色を黒い背景に黄色のテキスに変更するボーナス コードを紹介します。ボーナス コードの疑問や理由については説明しませんが、自分で解明できるでしょう (ヒント : PowerShell UI の構成時に使用できる色の詳細については、この記事 (英語) を参照してください)。

$pshost = get-host 
$pswindow = $pshost.ui.rawui 
 
$pswindow.windowtitle = "My PowerShell Session" 
$pswindow.foregroundcolor = "Yellow" 
$pswindow.backgroundcolor = "Black" 
 
cls

さあ、私たちは何を話したでしょう。Scripting Guys のおかげで、あなたは質問の回答だけでなく、たずねてもいない質問の回答まで受け取りました。

もちろん、公平に見て、Scripting Guys は、Microsoft の日常生活を話すときに、少し誇張する傾向があることは否めません。言うまでもなく、ここでは、いつでも質問に対する答えは "常に" 提供されます。

あるいは、少なくとも最後の仮想会議でそう言われました。その会議では、休暇後 (当然) のしかるべきときに集まり、将来決定を下すよう努めるべきかどうかを決定するよう努めることで合意しました。

もちろん、今年ではありませんが、来年度中に。

これからも、最新情報をお伝えします。


ページのトップへページのトップへ