从脚本和CSV文件设置IP配置?

时间:2015-07-06 20:53:45

标签: csv powershell batch-file vbscript ip

我在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将实现这个?

3 个答案:

答案 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