In Windows, puoi gestire le impostazioni per le tue schede di rete non solo dalla GUI ma anche dal prompt dei comandi di PowerShell. In questo articolo esamineremo i cmdlet più importanti che puoi utilizzare per scoprire l'indirizzo IP corrente di una scheda di rete, assegnare un indirizzo IP statico, assegnare un IP del server DNS o configurare un'interfaccia di rete per ricevere una configurazione IP da un server DHCP. Puoi utilizzare questi cmdlet per configurare la rete sia su Windows 10/11 che su Windows Server (o edizioni Server Core), Hyper-V Server, per modificare le impostazioni IP delle schede di rete sui computer remoti e negli script di automazione di PowerShell.
Contenuto:
- Gestione delle impostazioni della scheda di rete tramite PowerShell
- Come ottenere le impostazioni di un indirizzo IP con PowerShell
- Imposta l'indirizzo IP statico su Windows utilizzando PowerShell
- Imposta gli indirizzi IP del server DNS in Windows con PowerShell
- Gestione delle tabelle di routing con PowerShell
- PowerShell: modifica l'adattatore dall'indirizzo IP statico a DHCP
- Modifica DNS e indirizzi IP in remoto su più computer con PowerShell
In precedenza, ilnetsh interface ipv4 Il comando è stato utilizzato per gestire le impostazioni di rete dalla CLI. In PowerShell 3.0 e versioni successive è possibile utilizzare il file built-inNetTCPIPModulo PowerShell per gestire le impostazioni di rete su Windows.
Per ottenere l'elenco dei cmdlet in questo modulo, eseguire il comando seguente:
get-command -module NetTCPIP

Questo modulo include anche il cmdlet Test-NetConnection che può essere utilizzato per trovare porte TCP aperte su computer remoti.
Gestione delle impostazioni della scheda di rete tramite PowerShell
Elenca le interfacce di rete disponibili su un computer Windows:
Get-NetAdapter
Il cmdlet restituisce il nome dell'interfaccia, il suo stato (Su/Giù), l'indirizzo MAC e la velocità della porta.
In questo esempio, ho diversi adattatori di rete sul mio computer (oltre alla connessione fisica, Ethernet0, ho le interfacce di rete Hyper-V e VMWare Player).
Per visualizzare solo le interfacce di rete fisica abilitate:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}


Puoi visualizzare solo alcuni parametri della scheda di rete, come nome, velocità, stato o indirizzo MAC:
Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress


Windows potrebbe avere alcuni adattatori di rete nascosti. Per mostrarli tutti, aggiungi ilIncludiNascostoparametro:
Get-NetAdapter –IncludeHidden
Il risultato sarà un elenco di tutti gli adattatori Miniport WAN virtuali utilizzati per diversi tipi di connessioni, inclusa VPN. Un riavvio di questi adattatori spesso risolve alcuni errori di connessione VPN con il client Windows integrato. Sono disponibili cmdlet PowerShell separati per la gestione delle connessioni VPN.
È possibile fare riferimento alle interfacce di rete tramite i relativi nomi o indici (la colonna Indice). Nel nostro esempio, per selezionare l'adattatore LAN fisico Intel 82574L Gigabit Network Connection, utilizzare il comando:
Get-NetAdapter -Name Ethernet0
O:
Get-NetAdapter -InterfaceIndex 8


È possibile modificare il nome dell'adattatore:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
Per disabilitare un'interfaccia di rete, utilizzare questo comando:
Get-NetAdapter -Name Ethernet0| Disable-NetAdapter
Abilita la NIC con il suo nome:
Enable-NetAdapter -Name Ethernet0


Se l'adattatore di rete ha un numero VLAN configurato, puoi visualizzarlo:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
Ecco come puoi trovare le informazioni sul driver della scheda di rete che stai utilizzando:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName


Elenca le informazioni sugli adattatori di rete fisici (slot PCI, bus, ecc.):
Get-NetAdapterHardwareInfo
Disabilitare il protocollo IPv6 per l'interfaccia di rete:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Disabilitare il protocollo NetBIOS per un'interfaccia di rete:
Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True
Come ottenere le impostazioni di un indirizzo IP con PowerShell
Per ottenere le impostazioni attuali della scheda di rete in Windows (indirizzo IP, DNS, gateway predefinito):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
IMPARENTATO:Configura lo scavenging DNS per ripulire i record DNS obsoleti in AD


Per visualizzare informazioni più dettagliate sulla configurazione TCP/IP dell'interfaccia di rete, utilizzare il comando
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
In questo caso, vengono visualizzate la posizione di rete assegnata (profilo) (NetProfile.NetworkCategory) dell'interfaccia, le impostazioni MTU (NetIPv4Interface.NlMTU), se è abilitato l'ottenimento di un indirizzo IP da DHCP (NetIPv4Interface.DHCP) e altre informazioni utili.


Per ottenere solo l'indirizzo dell'interfaccia IPv4:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Restituisce solo il valore dell'indirizzo IP dell'interfaccia:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Durante la copia di file sulle macchine virtuali, molti amministratori hanno notato scarse prestazioni di rete su Windows Server 2019 con i ruoli Hyper-V abilitati. In questo caso, ripristinare le impostazioni dello stack TCP sulle impostazioni utilizzate in Windows Server 2016 aiuterà a risolvere i problemi:Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled
Visualizza un elenco dei protocolli di rete che possono essere abilitati o disabilitati per un adattatore di rete:
Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindings


Name DisplayName ComponentID Enabled ---- ----------- ----------- ------- Ethernet File and Printer Sharing for Microsoft Networks ms_server True Ethernet NetBIOS Interface ms_netbios True Ethernet Microsoft LLDP Protocol Driver ms_lldp True Ethernet Microsoft NDIS Capture ms_ndiscap True Ethernet Internet Protocol Version 4 (TCP/IPv4) ms_tcpip True Ethernet Microsoft RDMA - NDK ms_rdma_ndk True Ethernet Microsoft Network Adapter Multiplexor Protocol ms_implat False Ethernet Link-Layer Topology Discovery Mapper I/O Driver ms_lltdio True Ethernet NDIS Usermode I/O Protocol ms_ndisuio True Ethernet Point to Point Protocol Over Ethernet ms_pppoe True Ethernet Link-Layer Topology Discovery Responder ms_rspndr True Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True Ethernet Hyper-V Extensible Virtual Switch vms_pp False Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True Ethernet Client for Microsoft Networks ms_msclient True Ethernet Npcap Packet Driver (NPCAP) INSECURE_NPCAP True Ethernet WINS Client(TCP/IP) Protocol ms_netbt True Ethernet Bridge Driver ms_l2bridge True Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True Ethernet QoS Packet Scheduler ms_pacer True
Per visualizzare le sessioni TCP/IP attive su un computer, utilizzare il cmdlet Get-NetTCPConnection.
Imposta l'indirizzo IP statico su Windows utilizzando PowerShell
Proviamo a impostare un indirizzo IP statico per la scheda NIC. Per modificare un indirizzo IP, una maschera di rete e un gateway predefinito per un'interfaccia di rete Ethernet0, utilizzare il comando:
Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24
È possibile impostare un indirizzo IP utilizzando una struttura ad array (più visivamente):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
È possibile utilizzare New-NetIPAddress per aggiungere un secondo indirizzo IP (alias) a un adattatore di rete.
Se un indirizzo IP statico è già configurato e deve essere modificato, utilizzare il fileImposta-IndirizzoIPNetcmdlet:
Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90
Per disabilitare l'ottenimento di un indirizzo IP da DHCP per il tuo adattatore, esegui il comando:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Rimuovi l'indirizzo IP statico:
Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"
Imposta gli indirizzi IP del server DNS in Windows con PowerShell
Per impostare gli indirizzi IP del server DNS preferito e alternativo in Windows, utilizzare il fileSet-DNSClientServerAddresscmdlet. Per esempio:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
Puoi anche specificare gli IP dei server dei nomi DNS utilizzando un array:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
Dopo aver modificato le impostazioni DNS, puoi svuotare la cache del risolutore DNS (equivalente aipconfig /flushdns):
Clear-DnsClientCache
Visualizza il contenuto della cache DNS in Windows::Get-DnsClientCache
Gestione delle tabelle di routing con PowerShell
ILGet-NetRoutecmdlet viene utilizzato per visualizzare la tabella di routing.
Ottieni il percorso gateway predefinito per un'interfaccia di rete fisica in Windows:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"


Per aggiungere un nuovo percorso, utilizzare ilNuovo-NetRoutecmdlet:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
Questo comando aggiunge un percorso permanente alla tabella di routing (simile aroute -p add). Se desideri aggiungere un percorso temporaneo, aggiungi il file-PolicyStore "ActiveStore"opzione. Questo percorso verrà eliminato dopo il riavvio di Windows.
Rimuovere una rotta dalla tabella di routing:
Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False
PowerShell: modifica l'adattatore dall'indirizzo IP statico a DHCP
Per configurare il computer per ottenere un indirizzo IP dinamico per l'adattatore di rete dal server DHCP, esegui questo comando:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Cancella le impostazioni del server DNS:
Set-DnsClientServerAddress –InterfaceAlias Ethernet0 -ResetServerAddresses
E riavvia l'adattatore di rete per ottenere automaticamente un indirizzo IP dal server DHCP:
Restart-NetAdapter -InterfaceAlias Ethernet0
Se in precedenza avevi configurato un gateway predefinito, rimuovilo:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Se è necessario reimpostare tutte le impostazioni IPv4 per le interfacce di rete del computer e cambiarle per ottenere un indirizzo IP dinamico da DHCP, utilizzare il seguente script:
$IPType = "IPv4"
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"}
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") {
If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
$interface | Remove-NetRoute -Confirm:$false
}
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
}
Modifica DNS e indirizzi IP in remoto su più computer con PowerShell
È possibile utilizzare PowerShell per modificare in remoto l'indirizzo IP o le impostazioni del server DNS su più computer remoti.
Supponiamo che il tuo compito sia modificare le impostazioni DNS su tutti gli host Windows Server nell'unità organizzativa (UO) AD specifica. Lo script seguente utilizza il cmdlet Get-ADComputer per ottenere l'elenco dei computer da Active Directory e quindi si connette ai computer remoti tramite WinRM (viene utilizzato il cmdlet Invoke-Command):
$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=woshub,DC=cpm’ -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name
ForEach ($Server in $Servers) {
Write-Host "Server $($Server.Name)"
Invoke-Command -ComputerName $Server.Name -ScriptBlock {
$NewDnsServerSearchOrder = "192.168.2.11","8.8.8.8"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | ForEach-Object {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "New DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}











![[Aggiornamento software] Rilasciato Thunderbird ESR 128.4.4 e 115.16.3, ecco le novità e i problemi risolti](https://media.askvg.com/articles/images8/New_Thunderbird_Supernova_UI_Version_115_2023.png)
