如何在Windows 10中使用PowerShell为自动化操作系统构建过程永久设置静态IP地址?

5sxhfpxr  于 2023-01-05  发布在  Shell
关注(0)|答案(1)|浏览(138)

当我通过观看视频开始学习如何做到这一点时,我了解了IP地址接口索引。我了解到,如果不首先知道IP地址的接口索引,我就无法设置IP地址。这似乎在我查看的每台计算机上都不一样,而且似乎是随机的。然后,我了解到,您可以使用IP地址别名。在全新安装Windows时,IP地址别名Ethernet0似乎将成为一个我可以信赖的常量。因此,凭借我的原始PowerShell技能,我认为我可以伸手获取PC的IP地址,并检查它是否与预期匹配。如果不匹配,则清除Ethernet0,并创建一个别名为Ethernet0的新IP地址。当然,我第一次这样做时,它工作得很好,我继续前进。我有一个名为Ethernet0的静态IP地址,具有指定的IP地址。我只是进去查看,我有2个可用的NIC。一个名为“Ethernet”,另一个名为“Ethernet2”。它们都没有静态IP地址。我“我假设PC想在重新启动时设置随机别名?我对发生的事情有点困惑。当然,当我再次运行我的方法时,我得到一个错误,说“没有接口别名等于以太网0”,所以我的代码不起作用。很明显我不知道该如何处理这个问题。我想做一个全新的安装,并运行配置脚本,以设置一切没有任何图形用户界面交互。我不工作在一个企业域类型的环境,并创建自己的过程。请帮助进一步我的PowerShell智慧,因为我只是一个学徒。

function SetIp {

    $ipv4 = (Test-Connection -ComputerName $env:COMPUTERNAME -Count 1) .IPV4Address.IpAddressToString

    if($ipv4 -eq "my.ip.add.res") {
        Write-Host "Do Nothing as the IP has already been set"
    }
    else {
        Remove-NetIPAddress -InterfaceAlias ethernet0
        New-NetIPAddress -IPAddress my.ip.add.res -InterfaceAlias ethernet0 -PrefixLength 16
        Write-Host "IP Address has been set"
    }
}
n3schb8v

n3schb8v1#

您可以使用Get-NetIPInterface | Select * -First 1查看有关NetIPInterface对象的所有可用信息。一些有用的属性包括ConnectionStateAddressFamilyDhcp。例如,尝试执行以下操作以查找有效属性:

Get-NetIPInterface | Where { 
  $_.ConnectionState -eq 'Connected' -and
  $_.AddressFamily -eq 'IPV4' -and
  $_.InterfaceAlias -like 'Eth*' -and
  # check if in your local subnet
  ($_.DHCP -eq 'Enabled' -or ($_|Get-NetIPAddress).IPv4Address -like '1.2.3.*')
}

不过,您可能会遇到各种各样的问题,因此这取决于您的环境控制程度:

  • 已连接Wifi和/或以太网
  • 第二个以太网或笔记本电脑坞站可创建新的网络接口
  • VPN软件创建新的“以太网”接口

如果你需要用户输入,你可以使用gridview:

$Selected = Get-NetIPInterface | 
  ? {$_.AddressFamily -eq 'IPV4' -and $_.InterfaceAlias -notlike 'Loopback*'} | 
  Select IFIndex,InterfaceAlias,ConnectionState | 
  # Ask the user to select the interface
  Out-GridView -Title 'Please select the correct interface' -OutputMode Single

Set-NetIPInterface -InterfaceIndex $Selected.ifIndex -AddressFamily IPv4  ## etc...

也就是说,仅仅设置DHCP来处理这个问题几乎总是比较容易的。DHCP预留通常和用户机器的静态IP一样好

相关问题