এই নিবন্ধে আমরা আপনাকে দেখাব কিভাবে PowerShell এর মাধ্যমে Windows এ নেটওয়ার্ক অ্যাডাপ্টার প্যারামিটার কনফিগার করতে হয়। আমরা শিখব কিভাবে একটি স্ট্যাটিক IP ঠিকানা এবং DNS (নেমসার্ভার) পেতে এবং সেট করতে হয়, একটি DHCP সার্ভার থেকে IP কনফিগারেশন পেতে আপনার নেটওয়ার্ক ইন্টারফেস কনফিগার করুন। আপনি উইন্ডোজ সার্ভারের কোর/ন্যানো সংস্করণে, হাইপার-ভি সার্ভারে, দূরবর্তী কম্পিউটার/সার্ভারে এবং আপনার PS স্ক্রিপ্টে IP সেটিংস পরিবর্তন করতে নেটওয়ার্ক কনফিগার করতে এই cmdlets ব্যবহার করতে পারেন।
পূর্বে, netsh interface ipv4
কমান্ডটি CLI থেকে উইন্ডোজ নেটওয়ার্ক সেটিংস কনফিগার করতে ব্যবহৃত হয়েছিল। PowerShell 3.0 এবং পরবর্তীতে, আপনি বিল্ট-ইন PowerShell NetTCPIP ব্যবহার করতে পারেন উইন্ডোজ নেটওয়ার্ক সেটিংস পরিচালনা করার জন্য মডিউল।
এই মডিউলে cmdlet এর তালিকা পেতে, নিম্নলিখিত কমান্ডটি চালান:
get-command -module NetTCPIP
এই মডিউলটিতে Test-NetConnection cmdletও রয়েছে যা আপনি দূরবর্তী কম্পিউটারে TCP পোর্টের উপলব্ধতা পরীক্ষা করতে ব্যবহার করতে পারেন।
PowerShell দিয়ে নেটওয়ার্ক অ্যাডাপ্টার পরিচালনা করা
একটি কম্পিউটারে উপলব্ধ নেটওয়ার্ক ইন্টারফেসের তালিকা প্রদর্শন করুন:
Get-NetAdapter
cmdlet ইন্টারফেসের নাম, এর অবস্থা (উপর/নিচে), MAC ঠিকানা এবং পোর্টের গতি প্রদান করে।
এই উদাহরণে, আমার কম্পিউটারে আমার একাধিক নেটওয়ার্ক অ্যাডাপ্টার আছে (ভৌত সংযোগ ছাড়াও, ইথারনেট0 , আমার কিছু হাইপার-ভি এবং ভিএমওয়্যার প্লেয়ার নেটওয়ার্ক ইন্টারফেস আছে।
আপনি নেটওয়ার্ক ইন্টারফেসগুলিকে তাদের নাম বা সূচী দ্বারা উল্লেখ করতে পারেন (সূচক কলাম)। আমাদের উদাহরণে, শারীরিক 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
পাওয়ারশেলের সাথে TCP/IP নেটওয়ার্ক অ্যাডাপ্টার সেটিংস কিভাবে দেখবেন?
বর্তমান নেটওয়ার্ক অ্যাডাপ্টার সেটিংস পেতে (আইপি ঠিকানা, ডিএনএস, ডিফল্ট গেটওয়ে):
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 ব্যবহার করে
আসুন NIC-এর জন্য একটি স্ট্যাটিক আইপি ঠিকানা সেট করার চেষ্টা করি। একটি 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
যদি স্ট্যাটিক আইপি ঠিকানাটি ইতিমধ্যেই কনফিগার করা হয়ে থাকে এবং আপনি এটি পরিবর্তন করতে চান, তাহলে সেট-নেটআইপিএড্রেস 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
সেট-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 ব্যবহার করে 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 সেটিংস পরিবর্তন করবেন?
আপনি একাধিক দূরবর্তী কম্পিউটারে দূরবর্তীভাবে IP ঠিকানা বা DNS সার্ভার সেটিংস পরিবর্তন করতে PowerShell ব্যবহার করতে পারেন। ধরুন, আপনার কাজ হল নির্দিষ্ট AD পাত্রে (সাংগঠনিক ইউনিট) সমস্ত সার্ভারের জন্য 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}
}
}