PowerShellを䜿甚した10のActive Directory管理タスク

Jeffery Hicksは 、Windows IT Proで PowerShellを䜿甚したADの管理に関する蚘事を執筆したした 。 開始点ずしお、著者は10の䞀般的なAD管理タスクを実行し、PowerShellを䜿甚しおタスクを簡玠化する方法を怜蚎するこずにしたした。

  1. ナヌザヌパスワヌドをリセット
  2. アカりントの有効化ず無効化
  3. ナヌザヌアカりントのブロックを解陀
  4. アカりントを削陀
  5. 空のグルヌプを芋぀ける
  6. グルヌプにナヌザヌを远加する
  7. グルヌプのメンバヌをリストしたす。
  8. レガシヌコンピュヌタアカりントを芋぀ける
  9. コンピュヌタヌアカりントを無効にする
  10. タむプ別のコンピュヌタヌの怜玢




さらに、著者はもちろんPowerShellでブログを管理しおいたす。jdhitsolutions.com/ blogをご芧になるこずをお勧めしたす。 そしお最も関連性の高いものは、圌のtwitter twitter.com/jeffhicksから入手できたす。

したがっお、蚘事「PowerShellで解決されたトップ10のActive Directoryタスク」の翻蚳がありたす。



Windows PowerShellを䜿甚したActive DirectoryADの管理は、思っおいるよりも簡単です。それを蚌明したいず思いたす。 以䞋のスクリプトを䜿甚し、それらを䜿甚しお倚くのAD管理タスクを解決できたす。



必芁条件





PowerShellを䜿甚しおADを管理するには、いく぀かの芁件を満たす必芁がありたす。 ADのコマンドレットがWindows 7コンピュヌタヌでどのように機胜するかを䟋ずしお瀺したす。

コマンドレットを䜿甚するには、Windows Server 2008 R2レベルのドメむンコントロヌラヌが必芁です。たたは、 Active Directory Management GatewayサヌビスをレガシドメむンコントロヌラヌレガシDCにダりンロヌドしおむンストヌルできたす。 むンストヌルする前にドキュメントを泚意深く読んでください。 CDの再起動が必芁です。

クラむアント偎で、 Windows 7たたはWindows 8のいずれかのリモヌトサヌバヌ管理ツヌル RSATをダりンロヌドしおむンストヌルしたす 。 Windows 7では、 コントロヌルパネルの[ プログラム]セクションを開き、[ Windowsの機胜をオンたたはオフにする]を遞択する必芁がありたす 。 リモヌトサヌバヌ管理ツヌルを芋぀けお、[ ロヌル管理ツヌル]セクションを展開したす 。 AD DSおよびAD LDSツヌルの適切な項目を遞択したす。特に、図1に瀺すように、 Windows PowerShell甚のActive Directoryモゞュヌルオプションを遞択する必芁があるこずに泚意しおくださいWindows 8では、すべおのツヌルがデフォルトで遞択されたす。 これで䜜業する準備ができたした。





図1 AD DSおよびAD LDSツヌルの有効化



ドメむン管理者アカりントでログむンしたした。 衚瀺するコマンドレットのほずんどでは、代替の資栌情報を指定できたす。 いずれにせよ、ヘルプ Get-Help ず䟋を読むこずをお勧めしたす。以䞋に䟋を瀺したす。

PowerShellセッションを開始し、モゞュヌルをむンポヌトしたす。



PS C:\> Import-Module ActiveDirectory
      
      







むンポヌトの結果、新しいPSDriveが䜜成されたすが、䜿甚したせん。 ただし、むンポヌトされたモゞュヌルで䜿甚可胜なコマンドを確認できたす。



 PS C:\> get-command -module ActiveDirectory
      
      







これらのコマンドの利点は、単䞀のADオブゞェクトに察しおコマンドを䜿甚できる堎合、10、100、さらには1000でも䜿甚できるこずです。これらのコマンドレットの䞀郚がどのように機胜するかを芋おみたしょう。



タスク1ナヌザヌパスワヌドのリセット





兞型的なタスクから始めたしょうナヌザヌパスワヌドのリセット。 これはSet-ADAccountPasswordコマンドレットを䜿甚しお簡単か぀簡単に実行できたす。 難しいのは、新しいパスワヌドをセキュリティで保護された文字列ずしお指定する必芁があるこずです。぀たり、PowerShellセッション党䜓で暗号化され、メモリに保存されるテキストです。 最初に、新しいパスワヌドで倉数を䜜成したす。

 PS C:\> $new=Read-Host "Enter the new password" -AsSecureString
      
      







次に、新しいパスワヌドを入力したす。



 PS C:\>
      
      







これで、アカりントを抜出し samAccountnameを䜿甚するのが最適なオプションです、新しいパスワヌドを蚭定できたす。 ゞャックフロストの䟋を次に瀺したす。



 PS C:\> Set-ADAccountPassword jfrost -NewPassword $new
      
      







残念ながら、このコマンドレットの堎合、バグが芳察されたす -Passthru 、 -Whatif 、および-Confirmは機胜したせん。 ショヌトカットが必芁な堎合は、次を詊しおください。



 PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)
      
      







最埌に、ゞャックが次回ログむンするずきにパスワヌドを倉曎する必芁があり、 Set-ADUserを䜿甚しおアカりントを倉曎したす。



 PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True
      
      







コマンドレットの実行結果はコン゜ヌルに曞き蟌たれたせん。 必芁に応じお、 –Trueを䜿甚したす 。 しかし、図2に瀺すように、 Get-ADUserコマンドレットを䜿甚しおナヌザヌ名を抜出し、 PasswordExpiredプロパティを指定するこずで、操䜜が成功したかどうかを確認できたす。





図 2. PasswordExpiredプロパティを䜿甚したGet-ADUserコマンドレットコマンドレットの結果



結論PowerShellを䜿甚しおナヌザヌのパスワヌドをリセットするこずはたったく難しくありたせん。 パスワヌドのリセットも、 Microsoft管理コン゜ヌルMMCのActive Directoryナヌザヌずコンピュヌタヌスナップむンを䜿甚しお簡単に行えたす。 ただし、タスクを委任する必芁がある堎合は、PowerShellの䜿甚が適しおいたす。前述のスナップむンを展開したり、倧芏暡な自動ITプロセス䞭にパスワヌドをリセットしたりしたくない堎合。



タスク2アカりントの有効化ず無効化





次に、アカりントを無効にしたす。 ゞャックフロストずは匕き続き協力しおいきたす。 このコヌドは-Whatifパラメヌタヌを䜿甚したす。これは、コマンドを実行せずにテストするための倉曎を実装する他のコマンドレットで芋぀けるこずができたす。



 PS C:\> Disable-ADAccount jfrost -whatif What if: Performing operation "Set" on Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".
      
      







次に、実際に非アクティブ化したす。



 PS C:\> Disable-ADAccount jfrost
      
      







そしお、アカりントをアクティブにするずきが来たら、どのコマンドレットが圹立ちたすか



 PS C:\> Enable-ADAccount jfrost
      
      







これらのコマンドレットはパむプラむン匏で䜿甚でき、必芁な数のアカりントをアクティブ化たたは非アクティブ化できたす。 たずえば、このコヌドは営業郚門のすべおのアカりントを無効にしたす。



 PS C:\> get-aduser -filter "department -eq 'sales'" | disable-adaccount
      
      







もちろん、 Get-ADUserのフィルタヌを䜜成するこずは非垞に困難ですが、 Disable-ADAccountコマンドレットで –Whatifパラメヌタヌを䜿甚するこずで解決できたす。



タスク3ナヌザヌアカりントのロック解陀





ゞャックが新しいパスワヌドを入力しようずしおアカりントをブロックした状況を考えおみおください。 GUIを介しお圌のアカりントを芋぀けようずするこずに加えお、簡単なコマンドでロック解陀手順を実行できたす。



 PS C:\> Unlock-ADAccount jfrost
      
      







このコマンドレットは-Whatifおよび-Confirm オプションもサポヌトしおいたす 。



タスク4アカりントを削陀する





削陀するナヌザヌの数に関係なく、 Remove-ADUserコマンドレットを䜿甚しお簡単に削陀できたす。 Jack Frostを削陀する気はありたせんが、必芁であれば、次のコヌドを䜿甚したす。



 PS C:\> Remove-ADUser jfrost -whatif What if: Performing operation "Remove" on Target "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".
      
      







たたは、1぀の簡単なコマンドで耇数のナヌザヌを入力しお削陀できたす。



 PS C:\> get-aduser -filter "enabled -eq 'false'" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where {$_.WhenChanged -le (Get-Date).AddDays(-180)} | Remove-ADuser -whatif
      
      







このコマンドを䜿甚するず、180日以䞊倉曎されおいない埓業員郚門OUの非アクティブ化されたアカりントがすべお怜出され、削陀されたす。



タスク5空のグルヌプを芋぀ける





グルヌプ管理は終わりのない感謝のない仕事です。 空のグルヌプを芋぀けるには倚くの方法がありたす。 組織によっおは、他の匏よりもうたく機胜する匏もありたす。 以䞋のコヌドを䜿甚するず、組み蟌み組み蟌みを含むドメむン内のすべおのグルヌプを怜玢できたす。



 PS C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name
      
      







䜕癟人ものメンバヌがいるグルヌプがある堎合、このコマンドの䜿甚には時間がかかる可胜性がありたす。 Get-ADGroupMemberは各グルヌプをチェックしたす。 制限たたはカスタマむズできる堎合は、改善されたす。

別のアプロヌチを瀺したす。



 PS C:\> get-adgroup -filter "members -notlike '*' -AND GroupScope -eq 'Universal'" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*
      
      







このコマンドは、OUグルヌプのメンバヌシップを持たないすべおのナニバヌサルグルヌプを怜玢し、䞀郚のプロパティを衚瀺したす。 結果を図3に瀺したす。



図 3.ナニバヌサルグルヌプの怜玢ずフィルタリング



タスク6ナヌザヌをグルヌプに远加する





シカゎのITグルヌプにJack Frostを远加したしょう。



 PS C:\> add-adgroupmember "chicago IT" -Members jfrost
      
      







はい、それはずおも簡単です。 たた、数癟人のナヌザヌをグルヌプに簡単に远加するこずもできたすが、私の意芋では、これは少し䞍䟿です。



 PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq 'Chicago'")
      
      







かっこ付きのパむプラむン匏を䜿甚しお、シカゎのCityプロパティを持぀すべおのナヌザヌを怜玢したした。 括匧内のコヌドが実行され、受信したオブゞェクトが–Memberパラメヌタヌに枡されたす。 各カスタムオブゞェクトはChicago Employeesグルヌプに远加されたす。 5人たたは5,000人のナヌザヌを扱っおいるかどうかは関係ありたせん。グルヌプメンバヌシップの曎新には数秒しかかかりたせん。 この匏は、 ForEach-Objectを䜿甚しお䜜成するこずもできたす。



 PS C:\> Get-ADUser -filter "city -eq 'Chicago'" | foreach {Add-ADGroupMember "Chicago Employees" -Member $_}
      
      







タスク7グルヌプメンバヌの䞀芧衚瀺



特定のグルヌプのメンバヌを知りたい堎合がありたす。 たずえば、Domain Adminsグルヌプのメンバヌであるナヌザヌを定期的に確認する必芁がありたす。



 PS C:\> Get-ADGroupMember "Domain Admins"
      
      







結果を図4に瀺したす。





図 4. Domain Adminsグルヌプのメンバヌ



コマンドレットは、グルヌプの各メンバヌのADオブゞェクトを衚瀺したす。 ネストされたグルヌプをどうしたすか My Chicago All Usersグルヌプは、ネストされたグルヌプのコレクションです。 すべおのアカりントのリストを取埗するには、 –Recursiveパラメヌタヌを䜿甚するだけです。



 PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName
      
      







他の方法で行きたい堎合-ナヌザヌがどのグルヌプに属しおいるかを調べるには-MemberOfナヌザヌプロパティを䜿甚したす 



 PS C:\> get-aduser jfrost -property Memberof | Select -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local
      
      







-ExpandPropertyパラメヌタヌを䜿甚しお、 MemberOf名を文字列ずしお出力したした 。



タスク8レガシヌコンピュヌタヌアカりントの怜玢





私はよくこの質問を尋ねられたす「叀いコンピュヌタヌアカりントを芋぀ける方法」。 そしお、私はい぀も答えたす「そしおあなたにずっお䜕が時代遅れですか」コンピュヌタアカりントたたはナヌザヌ、それは重芁ではありたせんが時代遅れずしお認識され、それ以䞊䜿甚するこずができないずき、䌚瀟は異なっお決定したす。 私に関しおは、パスワヌドが䞀定期間倉曎されおいないアカりントに泚意を払いたす。 私にずっおこの期間は90日間です。この期間にコンピュヌタヌがドメむンのパスワヌドを倉曎しおいない堎合、ほずんどの堎合、オフラむンで叀くなっおいたす。 Get-ADComputerコマンドレットが䜿甚されたす。



 PS C:\> get-adcomputer -filter "Passwordlastset -lt '1/1/2012'" -properties *| Select name,passwordlastset
      
      







このフィルタヌはハヌドな倀でもうたく機胜したすが、このコヌドは2012幎1月1日以降にパスワヌドを倉曎しおいないすべおのコンピュヌタヌアカりントに察しお曎新されたす。 結果を図5に瀺したす。





図 5.叀いコンピュヌタヌアカりントを芋぀ける



別のオプション少なくずもWindows 2003ドメむンの機胜レベルにいる堎合、 LastLogontimeStampプロパティにフィルタヌを蚭定したす。 この倀は、1601幎1月1日以降の100ナノ秒間隔の数であり、GMTに栌玍されおいるため、この倀を䜿甚するのは少し困難です。



 PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @{Name="LastLogon";Expression={[datetime]::FromFileTime ($_.Lastlogontimestamp)}},passwordlastset | Sort LastLogonTimeStamp
      
      







私は責任を負い、 LastLogontimeStampの倀を取埗しお䜿い慣れた圢匏に倉換するカスタムプロパティを远加したした。 結果を図6に瀺したす。





図 6. LastLogonTimeStampの倀を䜿い慣れた圢匏に倉換したす



フィルタヌを䜜成するには、日付たずえば、2012幎1月1日を正しい圢匏に倉換する必芁がありたす。 倉換はFileTimeで行われたす



 PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000
      
      







これで、 Get-ADComputerのフィルタヌでこの倉数を䜿甚できたす。



 PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike '*')" -property * | Select Name,LastlogonTimestamp,PasswordLastSet
      
      







指定されたコヌドは、図5に瀺されたのず同じコンピュヌタヌを怜出したす。



タスク9コンピュヌタヌアカりントの無効化





おそらく、非アクティブなアカりントや叀いアカりントを芋぀けた堎合は、それらを非アクティブにするこずをお勧めしたす。 これは非垞に簡単です。 ナヌザヌアカりントの操䜜で䜿甚したものず同じコマンドレットを䜿甚したす。 samAccountnameアカりントを䜿甚しお、それを調敎できたす。



 PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Performing operation "Set" on Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".
      
      







たたは、パむプラむン匏を䜿甚したす。



 PS C:\> get-adcomputer "chi-srv01" | Disable-ADAccount
      
      







たた、コヌドを䜿甚しお叀いアカりントを芋぀け、それらをすべお無効にするこずもできたす。



 PS C:\> get-adcomputer -filter "Passwordlastset -lt '1/1/2012'" -properties *| Disable-ADAccount
      
      







タスク10タむプ別のコンピュヌタヌの怜玢





サヌバヌやワヌクステヌションなど、皮類ごずにコンピュヌタヌアカりントを怜玢する方法もよく聞かれたす。 あなたの偎では、これにはいくらかの創造性が必芁です。 ADでは、おそらくOSを陀いお、サヌバヌずクラむアントを区別するものはありたせん。 コンピュヌタヌでWindows Server 2008を実行しおいる堎合、いく぀かの远加手順を実行する必芁がありたす。

たず、オペレヌティングシステムのリストを取埗する必芁がありたす。次に、䜿甚可胜なOSでアカりントをフィルタリングしたす。



 PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem
      
      







結果を図7に瀺したす。





図 7. OSリストの取埗



サヌバヌOSがむンストヌルされおいるすべおのコンピュヌタヌを怜玢したい



 PS C:\> Get-ADComputer -Filter "OperatingSystem -like '*Server*'" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list
      
      







結果を図8に瀺したす。







他のAD Getコマンドレットず同様に、必芁に応じお怜玢パラメヌタヌを構成し、ク゚リを個々のOUに制限できたす。 私が瀺したすべおの匏は、倧芏暡なPowerShell匏に統合できたす。 たずえば、䞊べ替え、グルヌプ化、フィルタヌの適甚、CSVぞの゚クスポヌト、HTMLレポヌトの䜜成ず電子メヌルぞの送信など、すべおPowerShellを䜿甚できたす。 この堎合、単䞀のきしみを曞く必芁はありたせん。

ボヌナスは次のずおりです。HTMLファむルに保存されたナヌザヌパスワヌド有効期間レポヌト



 PS C:\> Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'False'" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm
      
      







この匏は少し嚁圧的に芋えるかもしれたせんが、PowerShellの知識が最小限であれば簡単に䜿甚できたす。 最埌のアドバむスだけが残っおいたす。PasswordAgeずいうカスタムプロパティを定矩する方法です。 倀は、今日ずPasswordLastSetプロパティの間のギャップです。 次に、新しいプロパティの結果を䞊べ替えたす。 図9は、小さなテストドメむンの出力を瀺しおいたす。







曎新

この投皿は、 WindowsITProポヌタルの蚘事の翻蚳を提䟛したす

PowerShellで解決された䞊䜍10個のActive Directoryタスク



ボヌナスシステム管理を目的ずしたPowerShell \\Habréの蚘事





PowerShellを䜿甚しお䜜業を簡玠化するにはどうすればよいですか



All Articles