Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

Windows PowerShell用Active Directoryモジュールは、ドメインの管理、Active Directoryオブジェクトの操作、ADコンピューターやユーザー、グループなどの各種情報の取得に欠かせない主要ツールの一つです。Windows管理者にとって、GUIスナップイン(通常は「Active Directoryユーザーとコンピューター」=ADUC)だけでなく、RSAT-AD-PowerShellモジュールのコマンドレットを使いこなせることは必須のスキルと言えます。本記事では、WindowsにPowerShell用Active Directoryモジュールをインストールする方法、基本機能、そしてAD管理に役立つ人気コマンドレットについて詳しく解説します。

Windows ServerへのActive Directory PowerShellモジュールのインストール

Windows Server向けActive Directory PowerShellモジュールは、Windows Server 2008 R2以降のOSに標準で組み込まれていますが、デフォルトでは無効になっています。

Windows Server 2016では、サーバーマネージャーからインストールできます。「役割と機能の追加」→「機能」→「リモート サーバー管理ツール」→「役割管理ツール」→「AD DS および AD LDS ツール」→「Active Directory module for Windows PowerShell」を選択してください。

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

また、PowerShellコンソールから以下のコマンドでもインストール可能です。

Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

RSAT-AD-PowerShellはドメインコントローラー以外にもインストールできます。ドメインメンバーのサーバーやワークステーションでも問題ありません。なお、サーバーをADドメインコントローラーに昇格させてActive Directoryドメインサービス(AD DS)役割を展開する際には、このモジュールが自動的にインストールされます。

モジュールは、ドメインコントローラー上のActive Directory Web Serviceを経由してADと通信します(TCPポート9389を使用)。そのため、ドメインコントローラー側にAD Webサービスがインストールされている必要があります。

Windows 10へのActive Directory PowerShellモジュールのインストール方法

RSAT-AD-PowerShellモジュールはWindows Serverだけでなく、クライアントのワークステーションにもインストールできます。Windows 7やWindows 8.1の場合は、RSAT(Remote Server Administration Tools)パッケージを手動でダウンロードしてインストールします。RSAT導入後、「コントロールパネル」→「プログラムと機能」→「Windows の機能の有効化または無効化」→「Remote Server Administration Tools」→「Role Administration Tools」→「AD DS および AD LDS ツール」からActive Directoryモジュールを有効化してください。

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

Windows 10ビルド1809以降では、RSATパッケージがWindowsイメージに統合されています(Features on Demand)。そのため、以下のPowerShellコマンドでActive Directoryモジュールをインストールできます。

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

なお、RSATをインストールせずにWindows 10へActiveDirectoryモジュールを展開する方法も存在します。

Active Directory PowerShellコマンドレットの基礎

Active Directoryモジュールには、ADを操作するための多数のコマンドレットが含まれています。新しいRSATバージョンほどコマンドレット数も増えており、Windows Server 2016では147個のActive Directory用PowerShellコマンドレットが利用可能です。

Active Directoryモジュールのコマンドレットを使用する前に、PowerShellセッションへモジュールをインポートする必要があります(Windows Server 2012 R2 / Windows 8.1以降では自動的にインポートされます)。

Import-Module ActiveDirectory

ローカルPCにモジュールがインストールされていない場合は、ドメインコントローラー(ドメイン管理者権限が必要)や、モジュールがインストール済みの別のデスクトップPCからリモートでインポートすることも可能です。

$psSess = New-PSSession -ComputerName DC_or_Comp_with_ADPoSh_installed
Import-Module -PSsession $psSess -Name ActiveDirectory

利用可能なActive Directoryコマンドレットの一覧は、以下のコマンドで表示できます。

Get-Command –module ActiveDirectory

ADモジュール内のコマンドレット総数は次のコマンドで確認できます。

Get-Command –module ActiveDirectory | measure-object | select count

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

RSAT-AD-PowerShellのコマンドレットの多くは、Get-Set-New-といったプレフィックスで始まります。

  • Get-系:ADからさまざまな情報を取得します(Get-ADUser=ユーザー属性、Get-ADComputer=コンピューター設定、Get-ADGroupMember=グループメンバーなど)。実行にドメイン管理者権限は不要で、任意のドメインユーザーがADオブジェクト属性の値を取得できます(機密属性を除く)。
  • Set-系:ADオブジェクトの設定変更に使用します。例えばSet-ADUserでユーザー属性の変更、Set-ADComputerでコンピューター設定の変更、ユーザーのグループへの追加などが可能です。実行には対象オブジェクトを変更する権限が必要です(権限委譲の詳細は関連記事を参照)。
  • New-系:ADオブジェクトを作成します(New-ADUser=ユーザー作成、New-ADGroup=グループ作成など)。
  • Remove-系:ADオブジェクトの削除に使用します。

任意のコマンドレットのヘルプは、以下のように表示できます。

get-help Set-ADUser

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

Active Directoryコマンドレットの使用例を表示するには、次のようにします。

(get-help New-ADComputer).examples

PowerShell ISEでは、コマンドレットのパラメーター入力時にポップアップヒントが表示されるため、非常に便利です。

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

RSAT-AD-PowerShellモジュールによるActive Directory管理の実例

ここからは、Active Directory PowerShellコマンドレットを使って実現できる、管理者の典型的なタスクをいくつか紹介します。

New-ADUser:ADユーザーの作成

新しいADユーザーを作成するには、New-ADUserコマンドレットを使用します。以下のコマンドでユーザーを作成できます。

New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "mbeck@woshub.com" -Path "OU=Users,OU=Berlin,OU=DE,DC=woshub,DC=com" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true

New-ADUserコマンドレットの詳細(ユーザーアカウントを一括作成する方法など)については、関連記事を参照してください。

Get-ADComputer:コンピューター情報の取得

特定のOU内のコンピューター名と最終ログオン日時を表示するには、Get-ADComputerコマンドレットを使用します。

Get-ADComputer -SearchBase 'OU=CA,OU=USA,DC=woshub,DC=com' -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Add-AdGroupMember:ユーザーをグループに追加

既存のセキュリティグループにユーザーを追加するには、次のコマンドを実行します。

Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf

ADグループのメンバーリストを表示し、CSVファイルにエクスポートする例です。

Get-ADGroupMember LondonSales -recursive | ft samaccountname | Out-File c:\ps\export_ad_users.csv

PowerShellによるADグループ管理の詳細は、関連記事をご覧ください。

Set-ADAccountPassword:ADユーザーのパスワードリセット

PowerShellからADユーザーのパスワードをリセットするには、次のコマンドを実行します。

Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Ne8Pa$$0rd1" -Force -Verbose) –PassThru

ADアカウントのロック解除・有効化・無効化の方法

ADユーザーアカウントを無効化する:

Disable-ADAccount m.lorenz

アカウントを有効化する:

Enable-ADAccount m.lorenz

ドメインのパスワードポリシーによってロックされたアカウントを解除する:

Unlock-ADAccount m.lorenz

Search-ADAccount:非アクティブ・無効オブジェクトの検索

90日以上ログオンしていないADドメイン内のすべてのコンピューターを検索して無効化するには、Search-ADAccountコマンドレットを使用します。

$timespan = New-Timespan –Days 90
Search-ADAccount -AccountInactive -ComputersOnly –TimeSpan $timespan | Disable-ADAccount

New-ADOrganizationalUnit:ADに組織単位(OU)を作成

典型的なOU構造を素早く作成したい場合は、PowerShellスクリプトが便利です。例えば、州名を付けた複数のOUを作成し、その中に標準的なオブジェクトコンテナーを作りたいとしましょう。GUIのADUCスナップインで手作業で構築すると非常に時間がかかりますが、PowerShell用ADモジュールなら数秒で完了します(スクリプト作成時間を除く)。

$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(".")
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = ("Nevada","Texas","California","Florida")
$Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts")
$FirstOU ="USA"
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
{
New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
{
New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
}
}

スクリプト実行後、Active Directoryには以下のようなOU構造が作成されます。

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

ADコンテナー間でオブジェクトを移動するには、Move-ADObjectコマンドレットを使用します。

$TargetOU = "OU=Sales,OU=Computers,DC=woshub,DC=com"
Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU

Get-ADReplicationFailure:ADレプリケーションエラーの確認

Get-ADReplicationFailureコマンドレットを使うと、ADドメインコントローラー間のレプリケーション状態を確認できます。

Get-ADReplicationFailure -Target NY-DC01,NY-DC02

ドメイン内のすべてのドメインコントローラーの情報を取得するには、Get-AdDomainControllerコマンドレットを使用します。

Get-ADDomainController –filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table –auto

PowerShellのActive Directoryモジュールをインストールして使いこなす方法【Windows Server / Windows 10対応】

以上、ADドメイン管理のためのActive Directory PowerShellモジュールの基本機能を見てきました。この記事が、モジュールのさらなる機能の探求や、AD管理タスクの自動化を進めるきっかけとなれば幸いです。

  1. Windows 10でWGETをダウンロード・インストール・使う方法を徹底解説

    ウェブサイトの重要なデータを、大事な場面で失ってしまったことはありませんか?想像するだけでも恐ろしいですよね。Linuxを使ったことがある方なら、WGETというツールの名前を聞いたことがあるかもしれません。実は、WGETはWindowsでも利用できるのです。GNUプロジェクトがWindows 10向けの互換バージョンを提供してくれているおかげです。この記事では、Windows 10用WGETのダウンロード方法とインストール手順をわかりやすく解説します。さらに、実際のコマンド例を交えながらWGETの使い方まで丁寧にご紹介するので、最後まで読めばWGETに関する知識をしっかり身につけられます。

  2. 【Windows 11】PowerShellのインストールと更新を簡単に行う方法

    はじめに PowerShellのバージョンを確認してみたら古かった、あるいはPowerShell自体から「更新してください」と促された——そんな経験はないでしょうか。では、Windows 11でPowerShellを更新するにはどうすればよいのでしょうか。 幸い、MicrosoftはWindows 11およびWindows 10 1709(ビルド16299)以降において、PowerShellをはじめとする各種アプリの更新を簡単に行える仕組みを用意しています。この記事では、その具体的な手順をわかりやすく解説します。 現在のPowerShellバージョンを確認する 更新作業の前に、まず現在使用し