我在sysprep部署后一直在研究很少的自动化脚本 我正在努力的网站由于与机器的公共交互而不使用DHCP,所以DHCP是不行的,我们为每台机器使用静态地址
前提是制作包含所有静态IP信息的CSV。该脚本在任何特定PC上运行时,将读取主机名,将其与文件中的列表相匹配,提取信息,并使用它来设置该计算机上的IP地址,掩码,网关和DNS服务器。
我只是不能完全解决它?
以下是.csv文件的示例
computerName,IPAddress,SubnetMask,Gateway,Dns1,Dns2
TestMachine2,10.1.0.57,255.255.255.0,10.1.0.1,10.1.0.18,10.1.0.13,
任何人都可以帮我工作.bat,.Vbs。或者.ps1将实现这个?
答案 0 :(得分:1)
您可以使用:
$CSV = import-csv "C:\temp\IPInfo.csv"
Foreach ($Item in $CSV)
{
$Computer = $Item.ComputerName
$IPaddress = $Item.IPAddress
$Subnet = $Item.SubnetMask
$GateWay = $Item.Gateway
$DNS1 = $Item.Dns1
$DNS2 = $Item.Dns2
$NicAdapter = Get-WmiObject win32_networkadapterconfiguration -Computer $Computer -Filter "ipenabled = 'true'"
$NicAdapter.EnableStatic($IPaddress, $Subnet)
$NicAdapter.SetGateways($GateWay, 1)
$NicAdapter.SetDNSServerSearchOrder(@($DNS1,$DNS2))
}
我没有检查SetDNSServerSearchOrder
方法是获取2个DNS服务器还是只有$NicAdapter.SetDNSServerSearchOrder($DNS1)
方法检查...
答案 1 :(得分:0)
这对我有用:
$csv = @"
computerName,IPAddress,SubnetMask,Gateway,Dns1,Dns2
TestMachine2,10.1.0.57,255.255.255.0,10.1.0.1,10.1.0.18,10.1.0.13
"@
$config = ConvertFrom-Csv $csv | Where { $_.computerName -eq $env:COMPUTERNAME }
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'"
$wmi.EnableStatic($config.IPAddress, $config.SubnetMask)
$wmi.SetGateways($config.Gateway, 1)
$wmi.SetDNSServerSearchOrder(@($config.Dns1, $config.Dns2))
首先,我们获取当前计算机的配置并将其存储在$config
变量中。然后我们使用WMI为启用ip的适配器设置配置。
您可能希望从脚本中删除$csv
示例,并使用Import-Csv
代替ConvertFrom-Csv
。
答案 2 :(得分:0)
你走了:
Dim shell : Set shell = CreateObject("WScript.Shell")
csv = "TestMachine2,10.1.0.57,255.255.255.0,10.1.0.1,10.1.0.18,10.1.0.13,"
ip = split(csv,",")(1)
mask = split(csv,",")(2)
gateway = split(csv,",")(3)
shell.run "netsh interface ip set address name=""Local Area Connection"" static " & _
ip & " " & _
mask & " " & _
gateway