【PowerShell】MVA対策 Windows PowerShell 3.0 を基礎から学ぶ - Part1 スクリプト入門編

以下に Windows PowerShell 3.0 のオンライントレーニングコースが公開されています。

もちろん日本語です。

PowerShell 3.0 を使用した高度なツールとスクリプト
https://www.microsoftvirtualacademy.com/training-courses/advanced-tools-and-scripting-with-powershell-3-jump-start-japanese#?fbid=pJeqjxv8UId

是非テストに挑戦していただきたいのですが、テストの解説がどこにも掲載されていないので、今日から9回に分けて解説したいと思います。

 

PowerShell V3 をサポートしているオペレーティング システムは次のうちどれですか?

Windows PowerShell v3 を利用するには Windows Management Framework 3.0 が必須です。

Windows 8 および Windows Server 2012 以降には標準で組み込まれていますが(Windows 8.1 および Windows Server 2012 R2 には v4 が組み込まれています)、それ以前の OS には以下からダウンロードしてインストールする必要があります。

https://www.microsoft.com/en-us/download/details.aspx?id=34595

Windows Management Framework 3.0 をサポートしている OS は Windows 7 Service Pack 1, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2 となります。

なので、設問中の Windows 7 は、微妙ですがサポート外ということになります。

スクリプトを使用して自動化する作業の種類はどれですか (2 つ選択してください)

これは結構悩ましい設問です。

「1回だけ発生して繰り返されない作業」については、一般的に自動化のメリットは得られずらいので選択肢としては妥当ではありません。

「アドホックな作業」とは、暫定的に行うような作業を意味しており、これも自動化できない作業と考えてよいでしょう。

よって、「管理者にとって一般的な作業」「繰り返し発生する作業」が選択肢としては適切です。

IT 環境における PowerShell の目的は何ですか

これも設問が漠然としていて難しですよね。

従来よりスクリプトの大きな目的は作業の自動化です。スクリプトがあるからといって、GUIの存在が必要なくなるわけではないし、手動の管理作業が必要なくなるわけではありません。

よって、最適な選択肢は「作業を管理および自動化するツールを提供する」になりますね。

PowerShell 3.0 の実行に必要な .NET Framework のバージョンはどれですか。

間違いやすい問題です。これは、Windows Management Framework 3.0 の動作条件を確認する必要があります。

以下にも記載されているように、.NET Framework 4.0 が必須となっています。

image

Windows XP でサポートされている PowerShell のバージョンはどれですか

サポート期限が 2014年4月に迫った Windows XP ですが、実は XP でも Windows PowerShell はサポートされていることをご存知の方は意外に少ないです。

実は、Windows Management Framework 2.0(Windows Management Core Package)は Windows XP SP3 用にも提供されており、これをインストーすることで Windows XP SP3 でも Windows PowerShell 2.0 を利用できます。

https://www.microsoft.com/ja-jp/download/details.aspx?id=16818

PowerShell の実行に使用するユーザー コンテキストはどれですか

これ、質問文が悪いですね。

言いたいのは「Windows PowerShell を実行する際に使用すべきユーザーコンテキストはどれですか?」という意味です。

ここでのユーザーコンテキストとは、「ユーザーの実行空間」とでもいえばよいでしょうか。なかなか訳しずらい言葉ですが。

要は、「どのユーザーの権限で Windows PowerShell を実行すべきか?」という問いです。

マイクロソフトにおける Windows PowerShell の位置づけはシステム管理ツールなので、「管理者コンテキスト」がただし答えになります。

Windows PowerShell のコンソールを開くときに「管理者として実行」を選択するようにしてね!というメッセージが込められています。でないと、管理作業がエラーになってしまうので。

PowerShell を管理者コンテキストで開くとプロンプトに表示されるディレクトリの場所はどれですか

「管理者コンテキスト」というところがミソですね。

実際にコンソールを開いてみれば一目瞭然です。

以下は「管理者として実行」を選択した開いた時のプロンプトです。

image

「管理者として実行」を選択しないと、現在のユーザーコンテキストで開かれるので、プロンプトは以下のようになります。

image

実行ポリシーを設定するには、どのコマンドレットを使用しますか

これは、これから Windows PowerShell を使用してシステム管理を始めようとする方が覚えておくべき事項の1つです。逆に言えば、これを知らないとシステム管理が先に進みません。

当然、こたえは「Set-ExecutionPolicy」ですね。

PowerShell のコンソールを開いたら、真っ先に以下のコマンドを入力してください。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

RemoteSigned は、「リモートからダウンロードしてきたスクリプトには署名が必須」という設定です。つまり、インターネット上に転がっているスクリプトをむやみやたらに実行できなくするわけですね。

ちなみに Windows Server 2012 までの規定値は Restricted(制限されている)です。つまり既定では自分で作ったスクリプトも実行できないので、これではあまりにも厳しすぎる。。。。ということで、RemoteSigned を使用するようにしましょう。R2 からは RemoteSigned が規定値になりました。

(参考) Set-ExecutionPolicy コマンドレットの使用 https://technet.microsoft.com/ja-jp/library/ee176961.aspx

PowerShell リモート処理の機能はどれですか

これは簡単だと思うのですが、どうでしょう。

「リモートデスクトップ」と書かれている選択肢は明らかに間違いです。リモートデスクトップはリモートデスクトップですからね。全く別の機能です。

答えは当然「リモート システムに対して対話的にまたはスクリプトで PowerShell を使用する機能」です。

Windows PowerShell を使用すると、スクリプトを使用してリモートのコンピューターを管理できます。これを「リモーティング」を言います。

リモーティング機能は、大きく分けて3種類の使い方があります。

  1. 各コマンドレットの -ComputerName パラメタを使用する
  2. Invoke-Command -ComputerName を使用する
  3. Enter-PSSession ーComputerName を使用して、SSHのようにリモートコンピューターにサインインする

多くのコマンドレットでは -ComputerName をサポートしていますが、中にはサポートしていないものもあります。場合によっては、リモートコンピューターのDOSコマンドを実行したいことがあるかもしれません。

そのときは Invoke-Command を使ってください。Invoke-Command を使用すれば任意のコマンドやスクリプトを相手のコンピューター上で実行することができます。

対話的に相手のコンピューターに入り込みたい場合には、Enter-PSSession -ComputerName を使用します。

Windows Server 2012 の既定の実行ポリシーは何ですか

これ、問題または答えが間違えています。

本当は、「Windows Server 2012 R2 の既定の実行ポリシーは何ですか?」でないといけません。もしくは、答えが 「Restricted」 でないとつじつまが合いません。

前述したように、Windows Server 2012 R2 の規定値は RemoteSigned です。

もしこのままの問いだとすると、「Resricted」が答えになるので、満点が取れなくなってしまいます。満点が欲しい方は「RemoteSinged」で答えてください~。

https://technet.microsoft.com/en-us/library/hh847748.aspx

本日の講義はここまで。

次回は、Part2 PowerShell のスクリプト言語 編 です。