PowerShell-এ Remote Command Execution অত্যন্ত শক্তিশালী ফিচার, যা আপনাকে দূরবর্তী কম্পিউটারগুলোতে কমান্ড বা স্ক্রিপ্ট রান করতে সাহায্য করে। এই কাজটি করতে PowerShell দুটি মূল কমান্ড প্রদান করে: Invoke-Command এবং Enter-PSSession।
এই কমান্ডগুলোর মাধ্যমে আপনি সহজেই একাধিক কম্পিউটারে কমান্ড চালাতে পারেন অথবা একটি রিমোট সেশনে কাজ করতে পারেন। এখানে এই দুটি কমান্ডের ব্যাখ্যা দেওয়া হলো।
Invoke-Command
Invoke-Command কমান্ডটি ব্যবহার করে আপনি এক বা একাধিক দূরবর্তী কম্পিউটারে কমান্ড অথবা স্ক্রিপ্ট ব্লক (script block) চালাতে পারেন। এটি স্ক্রিপ্টের যে অংশটি আপনাকে রিমোট মেশিনে রান করাতে হবে, সেটি একটি -ScriptBlock প্যারামিটার দিয়ে নির্দিষ্ট করা হয়।
Invoke-Command এর সিনট্যাক্স:
Invoke-Command -ComputerName <RemoteComputer> -ScriptBlock { <Command> }
উদাহরণ: একটি কমান্ড রান করা
ধরা যাক, আপনি একটি কম্পিউটার "RemotePC" তে Get-Process কমান্ড চালাতে চান:
Invoke-Command -ComputerName "RemotePC" -ScriptBlock { Get-Process }
এটি "RemotePC" কম্পিউটারে সমস্ত চলমান প্রক্রিয়া (process) তালিকা করবে।
একাধিক কম্পিউটার এ কমান্ড রান করা
আপনি একাধিক রিমোট কম্পিউটারে একই কমান্ড চালাতে চাইলে একটি অ্যারে ব্যবহার করতে পারেন:
Invoke-Command -ComputerName "RemotePC1", "RemotePC2" -ScriptBlock { Get-Service }
এটি "RemotePC1" এবং "RemotePC2"-তে Get-Service কমান্ড রান করবে।
Credentials ব্যবহার করা
যদি রিমোট সেশনে লোগইন করতে ক্রেডেনশিয়াল প্রয়োজন হয়, তাহলে -Credential প্যারামিটার ব্যবহার করে সেগুলি প্রদান করতে পারেন:
$credential = Get-Credential
Invoke-Command -ComputerName "RemotePC" -ScriptBlock { Get-EventLog -LogName Application } -Credential $credential
এটি "RemotePC" কম্পিউটারে Get-EventLog কমান্ডটি চালাবে এবং লগইন করার জন্য একটি ইউজারনেম ও পাসওয়ার্ড চাইবে।
Enter-PSSession
Enter-PSSession কমান্ডটি ব্যবহার করে আপনি একটি interactive remote session শুরু করতে পারেন, যেখানে আপনি একটি রিমোট কম্পিউটারে কমান্ড ইন্টারেক্টিভভাবে রান করতে পারবেন। এটি একটি PowerShell সেশন তৈরি করে, যেখানে আপনি একাধিক কমান্ড চালাতে পারবেন এবং ফলাফল দেখতে পারবেন।
Enter-PSSession এর সিনট্যাক্স:
Enter-PSSession -ComputerName <RemoteComputer>
উদাহরণ: একটি রিমোট সেশনে প্রবেশ করা
ধরা যাক, আপনি "RemotePC" কম্পিউটারটিতে রিমোট সেশন শুরু করতে চান:
Enter-PSSession -ComputerName "RemotePC"
এটি আপনার বর্তমান PowerShell সেশনে একটি নতুন সেশন খুলবে, যেখানে আপনি "RemotePC"-তে কমান্ড ইন্টারেক্টিভভাবে চালাতে পারবেন। সেশনে প্রবেশ করার পর, আপনার প্রম্পটের সামনে কম্পিউটার নাম দেখাবে, যেমন:
RemotePC:\>
এখানে আপনি "RemotePC" কম্পিউটারে যেকোনো PowerShell কমান্ড রান করতে পারবেন।
সেশন থেকে বের হওয়া
একবার রিমোট সেশনে কাজ শেষ হলে, আপনি Exit-PSSession কমান্ড ব্যবহার করে সেশনটি শেষ করতে পারেন:
Exit-PSSession
এটি আপনাকে আপনার লোকাল সেশনে ফিরিয়ে আনবে।
Invoke-Command এবং Enter-PSSession এর মধ্যে পার্থক্য
Invoke-Command: একাধিক কমান্ড বা স্ক্রিপ্ট একাধিক রিমোট কম্পিউটারে একসাথে রান করতে পারে, তবে এটি একাধিক কমান্ডের জন্য নতুন সেশন খুলে।Enter-PSSession: এটি একটি একক রিমোট সেশন তৈরি করে এবং আপনি একবার সেশনে প্রবেশ করলে ইন্টারেক্টিভভাবে কমান্ড রান করতে পারেন।
PowerShell Remoting Setup
রিমোট কমান্ড রান করতে হলে প্রথমে PowerShell Remoting সক্রিয় করতে হবে। আপনি এটি Enable-PSRemoting কমান্ড দিয়ে করতে পারেন:
Enable-PSRemoting -Force
এটি আপনার লোকাল এবং রিমোট কম্পিউটারে PowerShell Remoting সক্রিয় করবে। রিমোট কম্পিউটারে এই কমান্ডটি চালানোর জন্য অ্যাডমিনিস্ট্রেটর হতে হবে।
সারাংশ
PowerShell-এ Invoke-Command এবং Enter-PSSession কমান্ড দুটি দূরবর্তী কম্পিউটারে কমান্ড বা স্ক্রিপ্ট চালানোর জন্য অত্যন্ত গুরুত্বপূর্ণ। Invoke-Command একাধিক কম্পিউটারে স্ক্রিপ্ট রান করতে ব্যবহৃত হয়, আর Enter-PSSession কম্পিউটারগুলোর সাথে ইন্টারেক্টিভ সেশন শুরু করার জন্য ব্যবহৃত হয়। Proper remoting setup এবং authentication নিশ্চিত করা অপরিহার্য।
Read more