
- ãŠãŒã¶ãŒãã¹ã¯ãŒãããªã»ãã
- ã¢ã«ãŠã³ãã®æå¹åãšç¡å¹å
- ãŠãŒã¶ãŒã¢ã«ãŠã³ãã®ãããã¯ã解é€
- ã¢ã«ãŠã³ããåé€
- 空ã®ã°ã«ãŒããèŠã€ãã
- ã°ã«ãŒãã«ãŠãŒã¶ãŒãè¿œå ãã
- ã°ã«ãŒãã®ã¡ã³ããŒããªã¹ãããŸãã
- ã¬ã¬ã·ãŒã³ã³ãã¥ãŒã¿ã¢ã«ãŠã³ããèŠã€ãã
- ã³ã³ãã¥ãŒã¿ãŒã¢ã«ãŠã³ããç¡å¹ã«ãã
- ã¿ã€ãå¥ã®ã³ã³ãã¥ãŒã¿ãŒã®æ€çŽ¢
ããã«ãèè ã¯ïŒãã¡ãã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éã®èšäº
- Active Directoryãã¹ã¯ãŒãã®æå¹æééç¥
- Powershellã䜿çšããŠãã¡ã€ã«ã®åé€ãšã¢ã¯ã»ã¹ãç£æ»ããã€ãã³ãããã°ãã¡ã€ã«ã«æžã蟌ã
- Powershellã¯ãå€æŽã¢ã©ãŒãã§Active Directoryãç£æ»ããŸãã ããŒã1ãšããŒã2
- 倱ãããã°ã«ãŒãã ADã®ãå¥åŠãªãã°ã«ãŒãã®å²ãåœãŠã調ã¹ã
PowerShellã䜿çšããŠäœæ¥ãç°¡çŽ åããã«ã¯ã©ãããã°ããã§ããïŒ