Windows PowerShell 常に設定されていません!

Don Jones

内容

ソリューション
動画で見る
一対多のリモート処理
マインドを配置します。
リモート管理、スクール-新しいスタイルの

した常にいる不満サーバーの管理に関するマイクロソフト外も付属しているデュアル メッセージによって: 一方オンいるれる言いました独自のクライアント コンピューターに管理ツールをインストールするアクセスし、サーバーの管理をこれらのツールを使用します。 中なのでの基本的にだけ会えなくてデータ センターに、ウォークを行わずに技術的に不正がリモート デスクトップを使用してもおいる、データ センターに想定していません. 一方、ただしが多くのサーバー管理タスクを簡単に既存のリモート ツールの使用を実行できません-IP アドレスまたはネットワークの構成では、何をたとえば変更します。

Windows PowerShell に関する Q & A

Q ログオン スクリプトとして、Windows PowerShell スクリプトを使用できますか。

[はい] が任意のポイントこれにはない可能性があります。 VBScript ファイルできるように、グループ ポリシー オブジェクト (GPO) に、スクリプトをドラッグするだけでできません。 代わりを基本的にバッチ ファイル、Powershell.exe の実行を作成するがあるコマンド ライン パラメーターを渡す通知がどのようなスクリプトを実行します。 不適切なのです。 そのログオン スクリプトが実行されるすべてのコンピューターに Windows PowerShell をインストールすることも必要です。 最後に、点に留意 Windows PowerShell が VBScript または Cmd.exe シェルより少し単体で使用してください。 たとえば、新規作成-PSDrive コマンドレットを使用してドライブ マッピング変わりません Windows エクスプローラー-実際に Windows では、ドライブの割り当ておよびそのためしない理由だけで実行する場合は簡単な GPO に含めるには、従来のバッチ ファイルを使用するネットワークを使用するコマンドにフォールバックする必要がありますか。

Q Windows PowerShell スクリプトをスケジュールできるでしょうか。

A 絶対。 実際にされます (これは、% システムルート % フォルダー、/WindowsPowerShell の下にある) PowerShell.exe、スケジュールし、実行するスクリプトを指定するコマンド ライン パラメーターを付けます。 スケジュールされたタスクが、スクリプトはすべて、実行する権限のある、ユーザー アカウントを使用するセットアップされたかどうかを必ずをスクリプトが実行するように、シェルの実行ポリシーを構成してください (、自分のコンピューター、AllSigned ポリシーを使用する、スクリプトを意味する必要が、デジタル署名"ヘルプ実行 about_signing"シェルで詳細についてはこの)。

Q Windows PowerShell でのファイルとフォルダーのアクセス許可を使用する簡単、方法はありますか。

A を確認します。 始めるの Get ACL と設定の ACL のコマンドを既に手-取得 ACL がアクセス許可に関するレポートを行うには必要な場合は、優れた。 これらのコマンドを使用して実際にアクセス許可を変更するが非現実的で frankly、つまり Windows のアクセス許可が非常に複雑な獣、およびアクセス制御リスト (ACL) を設定するプログラミングが均等に複雑な。 しかし、コマンドレットを使用する必要があるというユーザーでしょうか。 シェルありより従来のコマンド ライン ツールでは、実行中で優れた Cacls.exe など Dsacls と同様に、Active Directory のさまざまな反復作業 Windows PowerShell 内から優れた。 常にする必要がある場合に使用変更またはファイルとフォルダーのアクセス許可を設定します。

新規 Server Core インストールの設定は別の優れた例です。 役割の追加、ネットワークを構成する、でも Windows のアクティブ化すべて行わなければなりませんまたは、リモート デスクトップを使用して、ローカルのコンソール ウィンドウからコマンド ライン ツールを使用します。 どのようなツールが現在存在は、いずれかの 1 つのタスクを処理するカスタム記述のポイント ソリューションまたは専門知識と (WMI) を必要とするソリューションです。 たいと、WMI が frankly、複雑すぎるために多くの学習の時間を費やしてにほとんどの管理者におされずので、多くの場合、未使用。

やすくのすべての Windows PowerShell が約束-WMI を処理すると、少しやすいことによってはさらに、お年間使用したコマンド ライン ユーティリティにほぼ対応する使いやすいコマンドレットに管理タスクのまとめです。 シェルの問題は、WMI、以外からの本質的に、ローカル シェルです。 リモート コンピューターへの問い合わせに対しては、すべてサポートを提供、コア オペレーティング システム構成のコマンドレットの多くしません。 シェルも解決しない WMI のより egregious 問題のいずれ: リモート接続のリモート プロシージャ コール (RPC) を使用します。 RPC がローカルのファイアウォールを使用する (と曜日をしないユーザーですか?) の環境で面倒任意のリモート管理に使用できない WMI 行うことがよくあります。

ソリューション

マイクロソフトが非常にしばらくの間、これらの欠点の認識されましたが、必要な修正を 1 つの製品で整列するすべての時間をした場合です。 その製品は Windows リモート管理 (WRM) の新しいバージョンを含む、Windows PowerShell v2 です。 両方を Windows 7 で Windows Server 2008 R2、初めて出荷はなり両方既定でこれらのオペレーティング システムでプレインストールになります。

テクノロジもが利用可能の以前のバージョンの可能性があるまで背面として Windows XP、Windows です。 この記述時点では、公式のお知らせが作成されなかったに関する (、古いオペレーティング システム、難しく、マイクロソフトのタスク、いくつかの必要な古いバージョンがないため、コア テクノロジのサポート) に正確に古いオペレーティング システムがサポートされます。

WinRM は、実際のキーのテクノロジによりすべてこのです。 [マイクロソフトの Web サービス-MAN、または Web サービスの管理] の実装と、名前が示すとおり、HTTP および HTTPS を使用して通信、つまりを簡単に、トラフィックのファイアウォールを通過します。 単一既知ポイントで開始され、会話をランダムに選択したポートに移動して、RPC とは異なり HTTP および HTTPS 利用 1 つのポート (80 および 443 既定がものに入らない場合は、構成します。 WinRM は多くの異なるアプリケーションの管理の着信接続には、「リッスン」をでき、Windows PowerShell v2 はそうことができる 1 つのアプリケーション。 (個人的には、思います WMI が WinRM を使用する移行最終的に。)

基本的に、クライアント コンピューターに配置して、リモート コンピューターにシェル接続を作成して依頼します。 WinRM をアクティブにする順番は、リモート コンピューター上の Windows PowerShell v2 のインスタンスを回転、リモート コンピューターにします。 シェルのインスタンスは、コマンドを実行して、コンピューターに結果を配信できます。

動画で見る

Windows 7 のパブリック ベータ リリースが初めて全体の世界でした試すこの: サーバー上の Windows PowerShell セッションを開く — または複数のサーバー — WinRM の構成および WinRM サービスを開始するには、有効にする-PSRemoting を実行します。 クライアント コンピューターに移動) も Windows PowerShell v2 を実行-$ セッションを実行して = 新規 PSSession コンピューター名、構成したサーバーの名前をリモート処理を提供します。 必要に応じて、および設定されている、その場合は、標準以外のポートを使用する言われることができる場合、新規作成-PSSession コマンドレットは、代替の資格情報を受け入れますもことができます。

方法が原因の場合、長いエラー メッセージ Figure 1 で示すよう、表示 WinRM を認証します。 既定では、Kerberos を使用してが (図ラボ コンピューター上でよう)、非ドメイン環境で Kerberos オプションはされていません。 Kerberos が使用できないときに WinRM で SSL 証明書サーバー コンピューターにインストールする必要が HTTPS トランスポートの使用を要求します。 これは、必要なコンピューターに接続がわかるようにして、サーバー間の相互認証を提供する行われます。 –auth パラメーターで、基本認証またはダイジェストの認証をも指定する役に立ちません、WinRM は HTTPS を使用して、そのトラフィックを暗号化したいため。 最も簡単なソリューションですか。 Active Directory ドメインにあります!

fig01.gif

図 1 このいずれかが、wayWinRM because of が発生するように、長いエラー メッセージ認証:

セッションをアクティブにすると、使用を開始する準備ができました。 入力 PSSession $ セッションは、ライブ、サーバーに接続、リモート。 magically、その Windows PowerShell のインスタンスで入力しています。 コマンドを対話的に実行し、結果をすぐに表示する (SSH または UNIX コンピューター上でよく使用するようなテクノロジと異なりされません。

Windows PowerShell のもがいくつか既定の暗号化、HTTPS を使用していない、ならもかなり eavesdroppers から保護できるようにします。 終了-PSSession をリモート コンソールからデタッチし、ローカル コンソールに戻りますを実行します。 場所を通知する、リモート コンピューターに接続しているときにも変更を表示する、シェル。

一対多のリモート処理

コマンドを 1 台のコンピューター上で実行することしますですが、どのくらいの頻度操作を行うする必要が 1 台のサーバー上で 1 つの操作ですか。 一般的に、全体の一連のコンピューターで、コマンド、または一連のコマンドを実行する必要があることが表示します。 何おしたところで使用される Windows PowerShell v1 を 1 対 1 (1: 1) リモート、つまり 1 人の 1 台のリモート コンピューターを管理する管理者と呼びます。 シェルは、一対多も提供していますが (1: n) のリモート処理を 1 つの管理者が複数のコンピューターを管理できる場所です。 新規作成-PSSession の –computerName パラメーターでです。

以前のコマンドを繰り返してみますは今回が、実際に綴ることを想定して、シェルの通知ではなく、パラメーター: 新しい-PSSession –computerName コンピューター。 –computerName が位置指定パラメーターのため、していない以前のバージョンでは、実際のパラメーター名を指定するようになりましたこれが簡単このトリックを理解する: $ セッション = 新規作成-PSSession –computerName (取得コンテンツ c:\names.txt)。 仮定すると C:\names.txt ファイルには、コンピューター名、1 行、1 つのコンピュータ名の一覧が含まれます、シェルは、$ セッション変数に全体のセッションの一覧を格納する、それらの各リモート セッションを作成します。

既定で、セッションが作成で実行されていた Windows PowerShell 自体の資格情報を使用して)、ログオン アカウントまたはアカウントが使用で別のユーザーとして実行、シェルの起動時。 単語の注意: ユーザー アカウント制御 (UAC) が有効になっている場合は明示的に"管理者"としてそのアイコンを右クリックして、シェルを起動してください。 代わりに、コマンドの –credential パラメーターを使用して、別のユーザー名、セッションに対して指定できます。

1 の方法で操作を続行できますこのコマンドのコレクションを入手したら、: を入力してください-PSSession $ セッション [0] で接続先コンピューターのシェル インスタンスをたとえばされます。 実際の電源はそれらのすべてに対して一度にコマンドの実行: 呼び出しコマンド –scriptblock {ipconfig} 0 –session $ セッション。 、セッションを接続したとするすべてのコンピューターで、Ipconfig コマンドを実行され、コンピューターに戻り、結果をもたらします。 並列、一度に 32 をコンピューターに接続が実際にを –throttlelimit パラメーターを使用してその並列実行スロットルを変更することができます。

マインドを配置します。

もちろん、コマンドを実行に時間がかかるをオフ射撃場合がありますが可能性がありますいないしたいし、すべてを完了するまで待機の周囲に配置します。 このような場合は、バックグラウンドで作業を続けるシェルをできるようにしない理由でしょうか。 呼び出し-コマンドに、–AsJob パラメーターをだけ追加し、シェルがバックグラウンド ジョブを作成します。

注意してください、シェルのコピーがない作業時間を行う実際、Windows PowerShell のリモート インスタンスで指定したコマンドが実行されていること。 シェルをすべて終了、待ってだけと、結果を収集、送り返します。 その結果は、ジョブの一部として格納されます。 現在のすべてのジョブとそれらの状態 (かどうかがいるまだ実行中など) を表示するには、Get-ジョブを実行します。 ジョブの受信が完了したジョブの出力結果を取得してください。 では、すべてよいます。

$sessions = New-PSSession –computerName (Get-Content c:\names.txt)
$job = Invoke-Command –scriptblock { your command(s) } –AsJob
Get-Job (to check the status)
$results = Receive-Job $job

$ 結果を表示、データを抽出、並べ替え、できなどできます。 各結果にどのコンピューターから送信されてきたわかりに関連付けられた情報。 バックグラウンド ジョブに対処する必要が sub-jobs を持つも)、今後の記事で説明します。

リモート管理、スクール-新しいスタイルの

データ センターにハイキングまたはリモート デスクトップを使用して関連するリモート管理の「チャート」古い学校方法を忘れた Windows PowerShell v2 のリモート処理機能は、コマンドを実行する強力かつ単純な方法 — 任意のコマンド (リモート コンピューター上で。 自分個人のフォーカスはサーバーの管理には、これらの同じ技法は適してデスクトップ管理タスクを同様に、Windows PowerShell v2 が Windows Server 2008 R2 などの Windows 7 にプレインストールされている 1 つの理由です。

Don の平均 co-founder concentrated のテクノロジ、場所彼 Windows PowerShell、SQL Server では、App-V について毎週のブログとその他のトピックです。 彼を自分の Web サイトを通じて連絡します。