কম্পিউটার টিউটোরিয়াল

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

Enter-PSSession কমান্ডলেট আপনাকে একটি রিমোট কম্পিউটারের সাথে স্থায়ী ইন্টারেক্টিভ পাওয়ারশেল সেশন স্থাপন করতে দেয়। আপনার কমান্ড প্রম্পটে যে সকল কমান্ড এন্টার করবেন সেগুলো রিমোট কম্পিউটারে এক্সিকিউট হবে। এই আর্টিকেলে, আমরা Enter-PSSession-এর প্রধান ফিচার এবং কীভাবে এটি উইন্ডোজ ১০/১১ এবং উইন্ডোজ সার্ভার ২০২২/২০১৯/২০১৬ চালিত কম্পিউটারগুলোকে রিমোটলি ম্যানেজ করতে ব্যবহার করা যায় তা ব্যাখ্যা করব।

Enter-PSSession কমান্ডলেট PowerShell Remoting স্ট্যাক দ্বারা চালিত। PSRemoting Web Services for Management (WS-Management) এবং WinRM সার্ভিস (Windows Remote Management) এর উপর ভিত্তি করে তৈরি। কম্পিউটারهای মধ্যে ট্রাফিক প্রোটোকল লেভেলে এনক্রিপ্টেড (আপনি ঐচ্ছিকভাবে PSRemoting WinRM ট্রাফিকের জন্য SSL এনক্রিপশন সক্ষম করতে পারেন)। আপনি বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যবহার করতে পারেন, NTLM এবং Kerberos সহ।

সহজ কেসে, একটি রিমোট কম্পিউটারের সাথে ইন্টারেক্টিভ পাওয়ারশেল সেশন স্থাপন করতে, আপনাকে শুধু সংযোগ করার কম্পিউটারের নাম নির্দিষ্ট করতে হবে (ComputerName অপশন)। একটি রিমোট কম্পিউটারের সাথে সংযোগ করতে, শুধু এই কমান্ডটি চালান:

Enter-PSSession hq-srv01.woshub.com

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

যদি বর্তমান ব্যবহারকারীর রিমোট হোস্টে সংযোগের অনুমতি থাকে, তবে আপনি রিমোট কম্পিউটারের ইন্টারেক্টিভ শেলের সাথে সংযোগ করবেন।

সংযোগের আগে ব্যবহারকারীর শংসাপত্র জিজ্ঞেস করতে পারেন:

Enter-PsSession –ComputerName hq-srv01.woshub.com –Credentials woshub\maxbak

অথবা:

$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $creds

লক্ষ্য করুন যে রিমোট কম্পিউটারের নাম এখন আপনার পাওয়ারশেল প্রম্পটের শুরুতে স্কোয়ার ব্র্যাকেটে দেখাচ্ছে ([hq-srv01.woshub.com])। এইভাবে আপনি বুঝতে পারবেন আপনি লোকাল শেলে কাজ করছেন কিনা রিমোট সেশনে।

রিমোটলি চালানো সকল কমান্ডের আউটপুট আপনার লোকাল কনসোলে প্রদর্শিত হবে। আপনি hostname কমান্ড চালিয়ে নিশ্চিত করতে পারেন যে আপনি একটি রিমোট কম্পিউটারে এটি চালাচ্ছেন।

আপনি এই ইন্টারেক্টিভ কমান্ড প্রম্পটে যেকোনো কমান্ড চালাতে পারেন (আপনার পারমিশন অনুযায়ী)।

উদাহরণস্বরূপ, পাওয়ারশেল ব্যবহার করে উইন্ডোজ নেটওয়ার্ক সেটিংস দেখান:

Get-NetIPConfiguration

আপনি রিমোট কম্পিউটারের DNS সেটিংস পরিবর্তন করতে পারেন:

Set-DNSClientServerAddress –InterfaceIndex 6 –ServerAddresses 192.168.13.4, 192.168.100.4

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

একটি ইন্টারেক্টিভ রিমোট শেল সেশন থেকে বের होने Exit-PSSession বা exit চালান। PS প্রম্পট স্বাভাবিক হয়ে যাবে এবং আপনি আপনার লোকাল পাওয়ারশেল কনসোলে ফিরে যাবেন:

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

পূর্বে, অ্যাডমিনিস্ট্রেটররা मुख্যভাবে রিমোট উইন্ডোজ কম্পিউটারে ইন্টারেক্টিভ কমান্ড প্রম্পট চালানোর জন্য PsExec টুলটি ব্যবহার করত। যাইহোক, Enter-PSSession আসার পর, তাদের এক্সটার্নাল টুল ব্যবহার করতে হয় না।

উইন্ডোজ সার্ভার ২০১৬/২০১৯/২০২২-এ, পাওয়ারশেল রিমোটিং ডিফল্টভাবে সক্রিয় থাকে (আপনি এটা Server Manager -> Local Server -> Remote Management = Enabled-এ দেখতে পারেন)।

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান
ডেস্কটপ উইন্ডোজ সংস্করণগুলোতে (Win10, Win11), PSRemoting এবং WinRM ডিজেবল থাকে।
আপনি নিচের কমান্ড ব্যবহার করে চেক করতে পারেন যে PSRemoting আপনার বর্তমান কম্পিউটারে সক্রিয় আছে কিনা:

Get-PSSessionConfiguration

এই কমান্ডটি WinRM-এ সংযোগের অনুমতি পাওয়া ব্যবহারকারী এবং গ্রুপের তালিকা পাওয়ার জন্যও ব্যবহার করা হয়। PSRemoting ব্যবহার করতে, একজন ব্যবহারকারীর অ্যাকাউন্ট অবশ্যই Administrators বা Remote Management Users গ্রুপের সদস্য হতে হবে। আপনি নন-অ্যাডমিন ব্যবহারকারীদের জন্য WinRM পাওয়ারশেল রিমোটিং কীভাবে সক্ষম করবেন তা সম্পর্কে আরও জানতে পারেন।

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

আপনি চেক করতে পারেন যে আপনি আপনার কম্পিউটারের সাথে লোকালি পাওয়ারশেল রিমোটিং ব্যবহার করে সংযোগ করতে পারছেন কিনা:

Test-WSMan -ComputerName localhost

যদি কমান্ডটি WSMan স্কিমা ভার্সন রিটার্ন করে, তবে PS Remoting ব্যবহার করে কম্পিউটারের সাথে রিমোট সংযোগ অনুমোদিত।

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

যদি পাওয়ারশেল রিমোটিং ডিজেবল থাকে বা কনফিগার না থাকে, তবে নিচের ত্রুটি দেখা দেয়:

Test-WSMan : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".

পাওয়ারশেল রিমোটিং সক্ষম করতে এই কমান্ডটি চালান:

Enable-PSRemoting -Force

এই কমান্ডটি:

  • WinRM সার্ভিস সক্ষম করে এবং এর স্টার্টআপ টাইপ Automatic-এ সেট করে;
  • ডিফল্ট WinRM পোর্টে (HTTP ট্রাফিকের জন্য TCP/5985) একটি কানেকশন পয়েন্ট তৈরি করে;
  • Windows Firewall-এ WS-Management-এর জন্য এক্সসেপশন যোগ করে (আপনি যদি ম্যানুয়ালি PSRemoting কনফিগার করেন, পাওয়ারশেল বা GPO দিয়ে ফায়ারওয়াল 룰 যোগ করুন)
  • রিমোট পাওয়ারশেল সেশন অনুমতি দেয়
  • WinRM সার্ভিস রিস্টার্ট করে

নিশ্চিত করুন যে WinRM সার্ভিস চলছে এবং অটোমেটিক্যালি শুরু হওয়ার জন্য সেট করা আছে:

Get-Service WinRM | Select MachineName,Name,Status, StartType

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

Enable-PSRemoting কমান্ডটি শুধু ডোমেন এবং প্রাইভেট উইন্ডোজ নেটওয়ার্ক প্রোফাইলের জন্য কাজ করে। আপনি যদি পাবলিক নেটওয়ার্কে থাকা কম্পিউটারে PSRemoting সক্ষম করতে চান, তবে নেটওয়ার্ক লোকেশন পাবলিক থেকে প্রাইভেটে পরিবর্তন করুন, বা নিচের কমান্ডটি ব্যবহার করুন:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

একটি অ্যাক্টিভ ডিরেক্টরি ডোমেনে, সার্ভার এবং কম্পিউটারগুলোর ওপর Windows Remote Management (PSRemoting) কেন্দ্রীয়ভাবে কনফিগার করার সবচেয়ে সহজ উপায় হল গ্রুপ পলিসি।

আধুনিক পাওয়ারশেল সংস্করণ (v6 বা v7) রিমোট কম্পিউটারের সাথে পাওয়ারশেল রিমোটিং এর মাধ্যমে সংযোগের জন্য সিকিউর শেল প্রোটোকল (SSH) সাপোর্ট করে। একটি SSH কানেকশন পয়েন্ট রিমোট কম্পিউটারে উপলব্ধ থাকতে হবে (উইন্ডোজ ১০-এ বিল্ট-ইন OpenSSH সার্ভার কীভাবে সক্ষম করবেন?)। আপনি SSH-র মাধ্যমে ইন্টারেক্টিভ PSRemoting সেশন শুরু করতে পারেন এই কমান্ড দিয়ে:

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com

অথবা SSH ব্যবহার করে RSA কী দিয়ে প্রমাণীকরণ করুন:

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com:22 -KeyFilePath c:\PS\max_rsa_key

আপনি Enter-PSSession New-PSSession সহ ব্যবহার করতে পারেন:

$s = New-PSSession -ComputerName hq-srv01.woshub.com
Enter-PSSession -Session $s

Enter-PSSession অনেক প্রমাণীকরণ পদ্ধতি সাপোর্ট করে। আপনি -Authentication প্যারামিটার ব্যবহার করে আপনার পছন্দেরটি সেট করতে পারেন। Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge প্রমাণীকরণ পদ্ধতিগুলো সমর্থিত।

উপরের উদাহরণে, আমরা দেখিয়েছি কীভাবে একই উইন্ডোজ ডোমেনে থাকা কম্পিউটারগুলোর মধ্যে ইন্টারেক্টিভ Enter-PSSession সংযোগ তৈরি করতে হয় (FQDN বা সংক্ষিপ্ত নাম নির্দিষ্ট করলেই চলে, Kerberos প্রমাণীকরণ ব্যবহৃত হয়)। আপনি যদি এর IP ঠিকানা বা CNAME ব্যবহার করে রিমোট কম্পিউটারের সাথে সংযোগ করার চেষ্টা করেন, তবে আপনি প্রমাণীকরণ করা যাবে না:

Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.

Enter-PSSession: ইন্টারেক্টিভ শেলে রিমোট কমান্ড চালান

একটি রিমোট কম্পিউটারের সাথে এর IP ঠিকানা ব্যবহার করে সংযোগ করতে, আপনি হোস্টকে ট্রাস্টেড হোস্টের তালিকা (Trusted Hosts) এ যোগ করতে পারেন বা WinRM-এর জন্য SSL ব্যবহার করতে পারেন (এটি আরও নিরাপদ)।

একটি IP ঠিকানা ট্রাস্টেড হোস্টে যোগ করতে এই কমান্ডটি চালান:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5

আপনি একটি ওয়াইল্ডকার্ড মাস্ক ব্যবহার করে ট্রাস্টেড হোস্ট যোগ করতে পারেন:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.woshub.com

ট্রাস্টেড হোস্টের তালিকা দেখাতে:

Get-Item WSMan:\localhost\Client\TrustedHosts

একইভাবে, আপনি আপনার হোস্টকে রিমোট কম্পিউটারের ট্রাস্টেড হোস্টের তালিকায় যোগ করতে পারেন।

সার্ভিস রিস্টার্ট করুন:

Restart-Service WinRM

একটি রিমোট কম্পিউটারের সাথে এর IP ঠিকানা ব্যবহার করে সংযোগ করতে নিচের কমান্ডটি চালান:

Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName woshub\maxbak)

Enter-PSSession এবং New-PSSession কমান্ডলেট একটি স্থায়ী वन-টু-ওয়ান রিমোট সেশন তৈরি করে এবং অধিকাংশ ইন্টারেক্টিভ পরিস্থিতিতে ব্যবহৃত হয়। আপনি যদি স্ক্রিপ্ট বা জব স্বয়ংক্রিয়ভাবে চালাতে চান বা একাধিক রিমোট কম্পিউটারে একসাথে কিছু করতে চান, তবে Invoke-Command কমান্ড ব্যবহার করুন।

  1. Fish - লিনাক্সের জন্য স্মার্ট ও ইউজার-ফ্রেন্ডলি ইন্টারেক্টিভ শেল (Fish Shell for Linux)

  2. শেল ট্রেসিং মাস্টার করুন: ধাপে ধাপে কমান্ড এক্সিকিউশন ডিবাগিং

  3. macOS-এ "Default Interactive Shell is now zsh" মেসেজ সরান

  4. व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি