在域環境下,電腦在加域後,默認全部電腦都會放在computers下面。在單域多站點的域架構中,都會針對各站點配置不一樣的組策略進行系統更新、軟件分發等策略,這樣就須要將電腦分別移動到不一樣站點所對應的OU下。shell
若是有統一的電腦命令規則,則能夠按電腦名來區分並移動電腦(若是須要,能夠將附件的PS中的IP方式改成電腦名的方式),可是若是電腦名沒有規則、按電腦的IP子網來移動,那就要每臺電腦去查詢IP並移動,這將是一個很是耗時的過程!若是管理員沒及時去操做,會因組策略套用不成功,致使軟件分發、系統更新等沒法應用,而達不到統一管理的要求。而在大型的單域多架構環境中,各站點又是不一樣的管理員,時間長了,就會有愈來愈多電腦依然存在於Computers沒有移動而致使各類問題。架構
最近在TechNet上,看到一個在2008R2AD上利用IP地址對Win7電腦重組OU的PowerShell:dom
PowerShell - Organize Windows 7 computers into OUs by IP - 2008R2 only,發現的方法和個人要求很接近,因此拿來進行了一點小加工,達到如下要求:ide
一、 將60天以上未使用的電腦,移動到指定的OU(Disabled OU,若是沒有,請提早建立)rest
二、 將90天以上未使用的電腦從域中刪除(若是不想刪除,請註釋掉,78-81行)blog
三、 由於默認手動加域電腦都會放在computers下面,因此只對Computers的電腦進行移動ip
四、 修改條件:get
針對XP/Vista/Win7/Win8/Win10等Windows 客戶端電腦(47-53行)域名
{(OperatingSystem -like "Windows XP*") -orit
(OperatingSystem -like "Windows Vista*") -or
(OperatingSystem -like "Windows 7*") -or
(OperatingSystem -like "Windows 8*") -or
(OperatingSystem -like "Windows 10*")},
或是全部非Windows Server的電腦移動到指定的OU,(文件第56-58行註釋掉的部分)若是要用下面的條件,請注意將上面的第47-53行註釋掉!
(OperatingSystem -notlike "Windows Server*"),
使用方法:
下載附件PS腳本文件,依需求修改如下定製
一、 增長或修改裏面的IP範圍,改成你域環境中各站點所對應的子網(第25-27行)
二、 將站點修改成你域中的實際站點名(37-39行)
$Site1DN = "OU=Site1,DC=yourdomain,DC=com"
$Site2DN = "OU=Site2,DC=yourdomain,DC=com"
$Site3DN = "OU=Site3,DC=yourdomain,DC=com"
三、 將域名修改成你的域名(第46行)
'CN=Computers,DC=yourdomain,DC=com'
四、 修改PowerShell執行策略,用Get-ExecutionPolicy查詢系統默認執行策略,若是爲Restricted,
請修改成RemoteSigned:Set-ExecutionPolicy RemoteSigned,
或是Unrestricted :Set-ExecutionPolicy Unrestricted
若是須要,能夠將PowerShell加到計劃任務(Powershell –file」D:\Script\PowerShell-MoveActiveDirectoryComputerByIPSubnet-AD2008R2」),定時自動執行,這樣能夠達到自動將電腦移動到指定OU的目的了,具體方法可參考文章:http://hubuxcg.blog.51cto.com/2559426/1309431#590523中第四步!