2015-10-16 57 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。

希望这可以帮助别人!

相关问题