इस लेख में हम आपको दिखाएंगे कि PowerShell के माध्यम से Windows में नेटवर्क एडॉप्टर पैरामीटर्स को कैसे कॉन्फ़िगर करें। हम सीखेंगे कि स्टेटिक IP पता और DNS (नेमसर्वर) कैसे प्राप्त करें और सेट करें, अपने नेटवर्क इंटरफेस को DHCP सर्वर से IP कॉन्फ़िगरेशन प्राप्त करने के लिए कॉन्फ़िगर करें। आप इन cmdlets का उपयोग Windows Server के Core/Nano संस्करणों, Hyper-V Server में नेटवर्क कॉन्फ़िगर करने, रिमोट कंप्यूटर/सर्वर पर IP सेटिंग्स बदलने और अपने PS स्क्रिप्ट में करने के लिए कर सकते हैं।
पहले, netsh interface ipv4 कमांड का उपयोग CLI से Windows नेटवर्क सेटिंग्स कॉन्फ़िगर करने के लिए किया जाता था। PowerShell 3.0 और नए में, आप बिल्ट-इन PowerShell NetTCPIP मॉड्यूल का उपयोग करके Windows नेटवर्क सेटिंग्स प्रबंधित कर सकते हैं।
इस मॉड्यूल में cmdlets की सूची प्राप्त करने के लिए, निम्न कमांड चलाएं:
get-command -module NetTCPIP

इस मॉड्यूल में Test-NetConnection cmdlet भी शामिल है जिसका उपयोग आप रिमोट कंप्यूटर पर TCP पोर्ट उपलब्धता का परीक्षण करने के लिए कर सकते हैं।
PowerShell के साथ नेटवर्क एडॉप्टर प्रबंधित करना
कंप्यूटर पर उपलब्ध नेटवर्क इंटरफेस की सूची प्रदर्शित करें:
Get-NetAdapter
Cmdlet इंटरफेस नाम, इसकी स्थिति (Up/Down), MAC पता और पोर्ट स्पीड लौटाता है।
इस उदाहरण में, मेरे कंप्यूटर पर कई नेटवर्क एडॉप्टर हैं (भौतिक कनेक्शन, Ethernet0 के अलावा, मेरे पास कुछ Hyper-V और VMWare Player नेटवर्क इंटरफेस हैं)।

आप नेटवर्क इंटरफेस को उनके नाम या इंडेक्स ( Index कॉलम) द्वारा संदर्भित कर सकते हैं। हमारे उदाहरण में, भौतिक LAN एडॉप्टर Intel 82574L का चयन करने के लिए, कमांड का उपयोग करें:
Get-NetAdapter -Name "Ethernet0"
या:
Get-NetAdapter -InterfaceIndex 8

आप एडॉप्टर नाम बदल सकते हैं:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
नेटवर्क इंटरफेस को अक्षम करने के लिए, इस कमांड का उपयोग करें:
Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter
जब आप इंटरफेस सक्षम करते हैं, तो आप इसके इंडेक्स का उपयोग नहीं कर सकते क्योंकि यह अभी तक असाइन नहीं किया गया है। आप एडॉप्टर नाम या विवरण निर्दिष्ट कर सकते हैं:
Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter"

यदि किसी एडॉप्टर के लिए VLAN निर्दिष्ट है, तो आप इसे इस प्रकार प्रदर्शित कर सकते हैं:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
यहां बताया गया है कि नेटवर्क एडॉप्टर ड्राइवर के बारे में जानकारी कैसे प्राप्त करें:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName

भौतिक नेटवर्क एडॉप्टर (PCI स्लॉट, बस, आदि) के बारे में जानकारी:
Get-NetAdapterHardwareInfo
PowerShell के साथ TCP/IP नेटवर्क एडॉप्टर सेटिंग्स कैसे देखें?
वर्तमान नेटवर्क एडॉप्टर सेटिंग्स (IP पता, DNS, डिफ़ॉल्ट गेटवे) प्राप्त करने के लिए:
Get-NetIPConfiguration -InterfaceAlias Ethernet0

वर्तमान नेटवर्क एडॉप्टर TCP/IP कॉन्फ़िगरेशन के बारे में विस्तृत जानकारी प्रदर्शित करने के लिए, इस कमांड का उपयोग करें:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
इस मामले में, इंटरफेस का असाइन किया गया नेटवर्क प्रोफाइल (NetProfile.NetworkCategory), MTU सेटिंग्स (NetIPv4Interface.NlMTU), DHCP से IP पता प्राप्त करना सक्षम है या नहीं (NetIPv4Interface.DHCP) और अन्य उपयोगी जानकारी प्रदर्शित की जाती है।

केवल इंटरफेस IPv4 पता प्राप्त करने के लिए:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
PowerShell का उपयोग करके स्टेटिक IP पता सेट करना
आइए NIC के लिए स्टेटिक IP पता सेट करने का प्रयास करें। किसी नेटवर्क इंटरफेस के लिए IP पता, सबनेट मास्क और डिफ़ॉल्ट गेटवे बदलने के लिए उपयोग करें:
New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 -InterfaceIndex 8
आप एरे स्ट्रक्चर का उपयोग करके IP पता सेट कर सकते हैं (अधिक विजुअली):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
आप New-NetIPAddress का उपयोग करके नेटवर्क एडॉप्टर पर दूसरा IP पता (उपनाम) जोड़ सकते हैं।
यदि स्टेटिक IP पता पहले से कॉन्फ़िगर किया गया है और आप इसे बदलना चाहते हैं, तो Set-NetIPAddress cmdlet का उपयोग किया जाता है:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.2.90
अपने एडॉप्टर के लिए DHCP से IP पता प्राप्त करना अक्षम करने के लिए, यह कमांड चलाएं:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
रूटिंग टेबल देखने के लिए, Get-NetRoute cmdlet का उपयोग किया जाता है। नया रूट जोड़ने के लिए, New-NetRoute cmdlet का उपयोग करें:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
नेटवर्क एडॉप्टर के लिए IPv6 प्रोटोकॉल अक्षम करने के लिए:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Set-DnsClientServerAddress: प्राथमिक और द्वितीयक DNS सर्वर पते सेट करें
Windows में प्राथमिक और द्वितीयक DNS सर्वर IP पते सेट करने के लिए, Set-DNSClientServerAddress cmdlet का उपयोग करें। उदाहरण के लिए:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
आप एरे का उपयोग करके नेमसर्वर भी सेट कर सकते हैं:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
अपनी DNS सेटिंग्स बदलने के बाद, आप रिज़ॉल्वर कैश साफ़ कर सकते हैं:
Clear-DnsClientCache
PowerShell का उपयोग करके स्टेटिक IP पता को DHCP में कैसे बदलें?
नेटवर्क एडॉप्टर के लिए DHCP सर्वर से डायनामिक IP पता प्राप्त करने की अनुमति देने के लिए, यह कमांड चलाएं:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
DNS सर्वर सेटिंग्स साफ़ करें:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
और अपने एडॉप्टर को पुनरारंभ करें ताकि DHCP सर्वर से स्वचालित रूप से IP पता प्राप्त हो सके:
Restart-NetAdapter -InterfaceAlias Ethernet0
यदि आपने पहले डिफ़ॉल्ट गेटवे कॉन्फ़िगर किया था, तो इसे हटाएं:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
PowerShell के साथ रिमोटली IP पता और DNS सेटिंग्स कैसे बदलें?
आप PowerShell का उपयोग करके कई रिमोट कंप्यूटर्स पर IP पता या DNS सर्वर सेटिंग्स रिमोटली बदल सकते हैं। मान लीजिए, आपका कार्य विशिष्ट AD कंटेनर (Organizational Unit) में सभी सर्वर्स के लिए DNS सेटिंग्स बदलना है। स्क्रिप्ट में कंप्यूटर्स की सूची प्राप्त करने के लिए Get-ADComputer cmdlet का उपयोग किया जाता है, और रिमोट कंप्यूटर्स से कनेक्ट करने के लिए WinRM का उपयोग किया जाता है (Invoke-Command cmdlet):
$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}
}
}