2016-02-20 27 views
2

我正在爲我工​​作的公司打包腳本,這將允許現場服務技術人員將專用工作站OU中的計算機轉換爲團隊工作站OU,反之亦然。VBS腳本將計算機從一個OU移動到下一個

這是現在這個腳本的一小部分,一個讓我感到困惑的一天中的大部分時間。我已經嘗試了這個腳本的不同變體,並且登上了一個我相信會讓我走上正軌的舞臺。

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select Name from Win32_ComputerSystem",,48) 
For Each objItem in colItems 
strPCName = objItem.Name 
Next 
Set objNewOU = GetObject("LDAP://OU=Computers,OU=Corporate,DC=xxxxx,DC=net") 
Set objMoveComputer = objNewOU.MoveHere("LDAP://CN=" & strPCName & ",OU=Computers,OU=Corporate,DC=xxxxx,DC=net",vbnullstring) 

我得到一個錯誤,服務器上沒有這樣的對象。當我將該計算機手動放入有問題的OU中時,我沒有收到該錯誤消息。這是我目前卡住的地方。

該腳本目前在我的個人實驗室中。

+0

我強烈建議你改用powershell。 vbscript是舊帽子,更難使用。 – Ashigore

+0

我想到了這一點,並且已經朝着這個方向發展,但Powershell與AD相關需要使用RSAT工具來處理您運行腳本的任何客戶端。這裏的目標是使現場服務技術人員能夠使用任何計算機,並使用SCCM的應用程序目錄並運行一個打包的應用程序,以便爲他們完成這項工作。安裝RSAT工具是過度的。 – radiodavefm

回答

1

我能夠通過使用下面的腳本得到一個可行的解決方案。

Set objSysInfo = CreateObject("ADSystemInfo") 
strComputerDN = objSysInfo.ComputerName 

Set objNewOU = GetObject("LDAP://OU=Private Workstations,OU=xxxx,OU=xxxx,DC=xxxx,DC=xxxx") 
Set objMoveComputer = objNewOU.MoveHere _ ("LDAP://" & strComputerDN, vbNullString) 

通過腳本的行爲來判斷,它使用strComputerDN來確定計算機的位置,objNewOU確定計算機正在進入的位置。 objmoveComputer將這些信息合併爲最佳狀態,因爲我可以確定將計算機移動到OU。

相關問題