PowerShell を使用して Windows Server の役割と機能を効果的に管理する方法

PowerShell で Windows Server の役割と機能を管理する方法 – 実用的なヒント

Windows Server での役割や機能の管理は、特に GUI を使って行う場合は、少々面倒です。PowerShell セッションを開いてコマンドラインから操作する方が速い場合もあります。GUI の読み込みを待ったり、延々とメニューをクリックしたりする必要もありません。私と同じように、スクリプトを使ってセットアップを行う方が好みかもしれません。スクリプトを使えば、再構築やスケーリングがずっと簡単になります。しかし、慣れていないと、適切なコマンドの使い方、依存関係の管理、リモートデプロイなど、少し難しい作業になることもあります。そこで、実際の経験に基づいた概要と、作業を少しでも楽にするヒントをご紹介します。—

PowerShell を使用して Windows Server にインストールされているすべての役割と機能を一覧表示する

すでにインストールされているものを確認したり、使用できるものを調べたりする必要があったことはありませんか。Get-WindowsFeatureここでコマンドレットが役に立ちます。パラメーターを指定せずに実行すると、インストール済み、使用可能、または削除済みのすべての役割/機能がダンプされます。出力はツリーのようなもので、役割は主要なカテゴリの下にネストされており、サーバー マネージャーに表示されるものと同様です。何かをインストールまたは削除する場合は、名前を知っておくことが重要です。- 一般的なシナリオでは、次を実行します。 NameDisplay NameInstall StateGet-WindowsFeature などの列を含むリストが表示されます。 Removedとしてマークされている役割がある場合、システムはスペースを節約するためにインストール ファイルを削除しました (WinSxS フォルダーを考えてください)。その役割を再インストールする場合、最も速い方法は次を実行することです。 一方、ファイルが見つからない場合、ISO またはネットワーク共有を指定できます。 これは、Windows では必要以上に複雑にしなければならない場合があるためです。インストールされている役割と機能だけを取得するには、この簡潔なパイプラインが役立ちます。 リモート サーバー上のステータスを確認する場合は、-ComputerNameパラメーターを追加します。 サーバー名を入れ替えるだけで、複数のサーバーの管理が少し楽になります。— Install-WindowsFeature -Name RoleNameInstall-WindowsFeature -Name RoleName -Source E:\sources\sxsGet-WindowsFeature | Where-Object {$_. InstallState -eq "Installed"} | Format-Table Name, InstallState -AutoSizeGet-WindowsFeature -ComputerName Server01 | Where-Object {$_. InstallState -eq "Installed"}

PowerShellで役割と機能をインストールする方法 – 実例

コマンドさえ覚えてしまえば、役割のインストールは簡単です。覚えておくべき主な点は ですInstall-WindowsFeature。依存関係は自動的に取り込まれますが、インストール前に何が起こるかを確認したい場合は、追加して、実際に-WhatIf何が起こるかを確認してみてください。例えば、DNSとその管理ツールを追加するには: Install-WindowsFeature DNS -IncludeManagementTools IISに依存するWSUSなどをインストールする場合は、必要なコンポーネントはすべて自動的に処理されますが、 Install-WindowsFeature UpdateServices -WhatIf 何が起こるかを確認するために、必ず実行しておくことをお勧めします。リモートサーバーに役割をインストールしたいですか?コマンドをリモートマシンに指定するだけで問題ありません。例を以下に示します: Install-WindowsFeature RDS-RD-Server -ComputerName NYC-RDS1 また、オプションの役割や依存関係のある役割をインストールする場合は、 を追加することで-IncludeAllSubFeatureすべてを一度に実行できます。インストール後にサーバーを自動的に再起動したい場合もあります: Install-WindowsFeature DHCP -Restart あるセットアップではスムーズに動作しますが、最初の試行で失敗しても驚かないでください。更新後や再起動が保留中の場合は、手動で再起動するか、コマンドを再実行することで問題が解決する場合があります。 —

複数のリモートサーバーにロールを展開する – バッチ処理を効率化する

複数のサーバーをお持ちで、すべてに同じ設定を適用したい場合でも、問題ありません。まず、現在のサーバーの役割と機能をCSV形式でエクスポートします。 Get-WindowsFeature | Where-Object {$_. Installed -eq $true} | Select-Object Name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation 次に、そのリストを他のサーバーにインポートします。簡単です。 Import-Csv C:\PS\Roles.csv | ForEach-Object { Install-WindowsFeature $_. Name } 必要な役割が既に参照サーバーに存在する場合は、非常に便利です。または、マシンのリストをループ処理して、次のコマンドを $servers = @('NY-RDS1', 'NY-RDS2', 'NY-RDS3') 実行します 。foreach ($server in $servers) { Install-WindowsFeature RDS-RD-Server -ComputerName $server } 問題なく動作しますが、一部のサーバーはオフラインになっているか、既に問題が発生している可能性があります。まずはサーバーの状態を確認してください。—

PowerShellで役割と機能を削除する方法

役割をクリーンアップしたいですか? install の反対は ですRemove-WindowsFeature。シンプルですが。例えば、プリントサーバーの役割を削除するには、-Restart フラグを使用します。 Remove-WindowsFeature Print-Server -Restart 必要応じて再起動が行われます。これは多くの場合必要です。役割を削除すると、サービスがまだ実行されていたり、依存関係が残っている場合、問題が長引くことがあります。削除後に何が残っているか必ず確認してください。—

総じて言えば、Windows Server のロール管理は PowerShell を使う方が GUI をクリックするよりも速く、スクリプト化も容易です。ただし、依存関係、リモート管理、ソースファイルなど、少し複雑です。なぜうまく動作したりしなかったりするのかはよく分かりません。これは Windows の古い習慣です。コマンドを手元に置いて、大規模な変更を展開する前に 1 台か 2 台のサーバーでテストすることをお勧めします。通常、インストールと削除のコマンドは問題なく動作します。慎重に作業すれば、クリック操作をするよりもずっとストレスが少なくなります。

まとめ

  • Get-WindowsFeatureインストールされて利用可能なものを確認するには、に慣れてください。
  • Install-WindowsFeature依存関係と自動再起動のオプションを使用してロールを追加するために使用します。
  • ループと CSV エクスポートを使用したスクリプトにより、複数のサーバーを簡単に管理できます。
  • Remove-WindowsFeatureクリーンアップ時にロールまたは機能を削除します。

まとめ

PowerShell を使ったサーバーロールの管理は完璧とは言えず、特に依存関係やファイルの不足など、Windows が操作に抵抗しているように感じることもあります。しかし、一度コツをつかめば、あれこれクリックするよりもずっと速く操作できます。ただし、サーバーによってはコマンドが停止したり、手動による介入が必要になったりする場合があることに注意してください。そのため、必ず再起動や手動チェックを計画しておいてください。PowerShell がデプロイとクリーンアップのスピードアップに役立つことを願っています。私の場合は何度か効果があったので、皆さんにも効果があることを願っています。