2015-10-16 86 views
0

我的問題是,是否有可能在企業環境中獲得計算機的域名,並將其用作MDT部署中的計算機名稱。使用PowerShell自動命名計算機獲取主機名和MDT

我知道,MDT對這裏設置計算機名稱選項:在部署共享權cklick - 規則

我喜歡使用變量$ CNAME(計算機名),我可以順利獲得通過follwing powershell命令作爲部署共享設置中「OSDComputerName =」的變量。


這個PS腳本能讓我在正確的名稱:

1獲得IP

$IP=((ipconfig | findstr [0-9].\.)[0]).Split()[-1] 

2進行NSLOOKUP IP

$Lookup=NSLOOKUP $IP 

3的正則表達式和調整輸出 - 替換修飾符以僅包含沒有DNS後綴的真實計算機名稱

$regex=$Lookup -match "(^.*\bName\b\:?\s*\b)[\w\d\s\-]*" 
$replace1=$regex -replace "Name: " 
$CNAME=$replace1 -replace "*DNSSUFFIX*" 

這可能嗎?否則,我可以以任何方式使用PowerShell腳本在部署完成後重命名計算機嗎?例如。我可以使用哪個命令將變量$ CNAME用作新計算機名稱?

+0

我相信,一旦計算機重建後,您可以使用重命名計算機-ComputerName $計算機-NewName $ NewComputerName,但我不確定從系統構建之前獲取名稱的位置? –

+0

該命令需要安裝PowerShell 3.0(我需要爲Windows 7部署運行此操作),並且在我的測試中,它甚至不能用於安裝PS3.0,這很可能是由於我在測試域中測試過的計算機目前。如果在計算機不在域中時重命名 - 計算機 - 新名稱確實有效,它將在下週進行測試。無論如何,這需要首先部署PowerShell 3.0,我想避免...感謝您的輸入! – kbecker87

回答

0

下面的腳本將使用IP地址來查詢你的DNS,讓您的域中的計算機的名稱,並將其傳遞迴MDT爲OSDComputerName

此作品在計算機被命名爲喜歡name.xx.yournamespace.de的環境

從Windows ISO添加到Nslookup.exe的將WinPE引導映像(安裝WinPE的WIM與DISM複製到Nslookup.exe的System32下)

調整你的CustomSettings.ini規則,添加:

UserExit=Setname.vbs 
OSDComputerName=#SetName("%IPAddress%")# 

添加USEREXIT腳本您Deploymentshare腳本,文件夾,命名爲Setname.vbs

Function UserExit(sType, sWhen, sDetail, bSkip) 
UserExit = Success 
End Function 
Function SetName(sIP) 
Dim rName 
Set objShell = createobject("wscript.shell") 
strParams = "%comspec% /c nslookup " & sIP & "" 
Set objExecObj = objShell.exec(strParams) 
Do While Not objExecObj.StdOut.AtEndOfStream 
    strText = objExecObj.StdOut.Readline() 
    If instr(strText, "dns-9") Then 
     strServer = trim(replace(strText,"(null):","")) 
Elseif instr (strText, "xx.yournamespace.de") Then 
    strhost = trim(replace(strText,"(null)","")) 
End if 
Loop 
rName = replace(strhost, ".xx.yournamespace.de", "") 
SetName = rName 
End Function 

調整置換到您的網絡。 SetName將被傳回MDT。

希望這可以幫助別人!

相關問題