Jeffery Hicks㯠ãWindows IT Pro㧠PowerShellã䜿çšããADã®ç®¡çã«é¢ãã
èšäºãå·çããŸã
ã ã éå§ç¹ãšããŠãèè
ã¯10ã®äžè¬çãªAD管çã¿ã¹ã¯ãå®è¡ããPowerShellã䜿çšããŠã¿ã¹ã¯ãç°¡çŽ åããæ¹æ³ãæ€èšããããšã«ããŸããã
- ãŠãŒã¶ãŒãã¹ã¯ãŒãããªã»ãã
- ã¢ã«ãŠã³ãã®æå¹åãšç¡å¹å
- ãŠãŒã¶ãŒã¢ã«ãŠã³ãã®ãããã¯ã解é€
- ã¢ã«ãŠã³ããåé€
- 空ã®ã°ã«ãŒããèŠã€ãã
- ã°ã«ãŒãã«ãŠãŒã¶ãŒãè¿œå ãã
- ã°ã«ãŒãã®ã¡ã³ããŒããªã¹ãããŸãã
- ã¬ã¬ã·ãŒã³ã³ãã¥ãŒã¿ã¢ã«ãŠã³ããèŠã€ãã
- ã³ã³ãã¥ãŒã¿ãŒã¢ã«ãŠã³ããç¡å¹ã«ãã
- ã¿ã€ãå¥ã®ã³ã³ãã¥ãŒã¿ãŒã®æ€çŽ¢
ããã«ãèè
ã¯ïŒãã¡ãã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ã䜿çšããŠäœæ¥ãç°¡çŽ åããã«ã¯ã©ãããã°ããã§ããïŒ