PowerShell এ Functions এবং Scripts তৈরি করা খুবই গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে কোডের পুনরাবৃত্তি কমানো, কোডের সঙ্গতি বজায় রাখা এবং স্ক্রিপ্টিং কর্মক্ষমতা বৃদ্ধি করা সম্ভব হয়। নিচে PowerShell Functions এবং Scripts তৈরি এবং ব্যবহার করার বিস্তারিত গাইড দেওয়া হলো।
PowerShell Functions
PowerShell Function হলো এক ধরনের কাস্টম কোড ব্লক যা পুনরাবৃত্তি করা কোডের জন্য ব্যবহৃত হয়। ফাংশনটি একটি নামের মাধ্যমে কল করা যায় এবং এটি আর্গুমেন্ট গ্রহণ করতে পারে এবং একটি মান (value) ফিরিয়ে দিতে পারে।
PowerShell Function তৈরি করা
PowerShell এ ফাংশন তৈরি করতে Function কিওয়ার্ড ব্যবহার করা হয়, এরপর ফাংশনের নাম এবং কোড ব্লক {} ব্যবহার করা হয়।
উদাহরণ:
Function Get-Greeting {
"Hello, PowerShell!"
}
এখানে Get-Greeting নামের একটি ফাংশন তৈরি করা হয়েছে, যা "Hello, PowerShell!" টেক্সটটি রিটার্ন করবে।
PowerShell Function ব্যবহার করা
ফাংশনটি কল করতে তার নাম ব্যবহার করা হয়:
Get-Greeting
আউটপুট:
Hello, PowerShell!
PowerShell Function এ আর্গুমেন্ট (Arguments) যোগ করা
ফাংশনে আর্গুমেন্ট (parameters) প্রদান করা যেতে পারে। ফাংশনে আর্গুমেন্টের মাধ্যমে ডেটা পাঠানো এবং সেই ডেটার উপর ভিত্তি করে কাজ করা যায়।
উদাহরণ:
Function Get-Greeting {
param (
[string]$Name
)
"Hello, $Name!"
}
এখানে $Name নামক একটি আর্গুমেন্ট যুক্ত করা হয়েছে, এবং ফাংশন কল করার সময় এটি পাস করতে হবে।
আর্গুমেন্ট সহ ফাংশন কল করা:
Get-Greeting -Name "Alice"
আউটপুট:
Hello, Alice!
Default Values এবং Validation:
PowerShell ফাংশনে ডিফল্ট মান এবং ভ্যালিডেশনও ব্যবহার করা যেতে পারে।
উদাহরণ:
Function Get-Greeting {
param (
[string]$Name = "Guest" # Default value
)
"Hello, $Name!"
}
এখানে যদি $Name আর্গুমেন্টটি প্রদান না করা হয়, তবে ডিফল্ট মান "Guest" ব্যবহার করা হবে।
PowerShell Scripts
PowerShell Scripts হলো একাধিক PowerShell কমান্ডের একটি সেট যা একটি ফাইলে সংরক্ষিত থাকে এবং একসঙ্গে একাধিক কাজ সম্পন্ন করতে ব্যবহৃত হয়। একটি PowerShell স্ক্রিপ্ট তৈরি করতে .ps1 এক্সটেনশন ব্যবহার করা হয়।
PowerShell Script তৈরি করা
PowerShell স্ক্রিপ্ট তৈরি করতে, প্রথমে একটি নতুন ফাইল তৈরি করতে হবে এবং সেই ফাইলে PowerShell কমান্ডগুলি লিখতে হবে।
উদাহরণ: PowerShell Script তৈরি
- Script File তৈরি করুন: একটি নতুন ফাইল তৈরি করুন, যেমন
MyScript.ps1। - স্ক্রিপ্টে PowerShell কোড লিখুন:
# MyScript.ps1
$greeting = "Hello, PowerShell!"
Write-Output $greeting
এখানে Write-Output কমান্ডটি $greeting ভেরিয়েবলের মান আউটপুট করবে।
PowerShell Script চালানো
স্ক্রিপ্ট চালানোর জন্য PowerShell টার্মিনাল ব্যবহার করা হয়। তবে, প্রথমে স্ক্রিপ্টের রান পলিসি (Execution Policy) নিশ্চিত করতে হবে।
- Execution Policy চেক করা:
Get-ExecutionPolicy
- Execution Policy পরিবর্তন করা (যদি প্রয়োজন হয়):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- স্ক্রিপ্ট চালানো:
.\MyScript.ps1
এটি স্ক্রিপ্টটি এক্সিকিউট করবে এবং আউটপুট হিসেবে "Hello, PowerShell!" দেখাবে।
PowerShell Functions এবং Scripts এর মধ্যে পার্থক্য
| Feature | PowerShell Function | PowerShell Script |
|---|---|---|
| Purpose | কোডের পুনরাবৃত্তি কমাতে, নির্দিষ্ট কাজ সম্পাদন করার জন্য। | একাধিক PowerShell কমান্ড এবং ফাংশন একত্রিত করে। |
| Structure | Function কিওয়ার্ড দিয়ে শুরু, এরপর কোড ব্লক {}। | .ps1 ফাইলে একাধিক PowerShell কমান্ড। |
| Input (Parameters) | আর্গুমেন্ট গ্রহণ করতে পারে। | আর্গুমেন্ট গ্রহণ না করলেও কোড ফাইলটি চলতে পারে। |
| Output | একটি মান রিটার্ন করতে পারে। | স্ক্রিপ্টের আউটপুট কমান্ড দ্বারা নির্ধারিত। |
| Reusability | সহজেই পুনঃব্যবহারযোগ্য। | স্ক্রিপ্ট ফাইলের মাধ্যমে একাধিক কমান্ড একত্রিত করা যায়। |
| Execution | ফাংশনকে কোডের যেকোনো জায়গা থেকে কল করা যায়। | স্ক্রিপ্টকে সম্পূর্ণ চালানো হয়। |
PowerShell Functions এবং Scripts একত্রে ব্যবহার
PowerShell ফাংশন এবং স্ক্রিপ্ট একত্রে ব্যবহৃত হতে পারে। ফাংশনগুলি স্ক্রিপ্টের মধ্যে একটি নির্দিষ্ট কাজের জন্য রাখা যেতে পারে, এবং একাধিক ফাংশন একত্রিত করে একটি বড় স্ক্রিপ্ট তৈরি করা যায়।
উদাহরণ: Functions ব্যবহার করে Script তৈরি করা
# Functions.ps1
Function Get-Greeting {
param (
[string]$Name = "Guest"
)
return "Hello, $Name!"
}
$greetingMessage = Get-Greeting -Name "Alice"
Write-Output $greetingMessage
এখানে একটি ফাংশন Get-Greeting তৈরি করা হয়েছে যা একটি নাম প্যারামিটার হিসেবে গ্রহণ করে এবং একটি গ্রিটিং বার্তা রিটার্ন করে। পরে সেই ফাংশন কল করে আউটপুট প্রদর্শন করা হয়েছে।
Script Run:
.\Functions.ps1
এটি "Hello, Alice!" আউটপুট দেবে।
সারাংশ
PowerShell এ Functions এবং Scripts দুটি গুরুত্বপূর্ণ টুল যা কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যক্ষমতা বৃদ্ধি করতে সাহায্য করে। Functions ব্যবহার করে নির্দিষ্ট কাজ সম্পাদন করা যায়, আর Scripts ব্যবহার করে একাধিক কমান্ড একত্রিত করা যায়। Functions এবং Scripts একত্রে ব্যবহার করা হলে কোড আরও সংগঠিত এবং কার্যকর হয়।
PowerShell-এ function হলো একটি কোড ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য তৈরি করা হয়। এটি পুনরাবৃত্তি ভিত্তিক কাজগুলো সহজভাবে পরিচালনা করতে সাহায্য করে, কারণ একটি ফাংশন একবার তৈরি করলে, আপনি সেটি বারবার ব্যবহার করতে পারেন। PowerShell ফাংশনগুলি ইনপুট প্যারামিটার নিতে পারে এবং আউটপুট প্রদান করতে পারে, এবং এটি কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।
Function কী?
PowerShell ফাংশন হলো একটি নামকৃত কোড ব্লক, যা একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য ডিফাইন করা হয়। ফাংশন ব্যবহার করে আমরা পুনরাবৃত্তিমূলক কাজগুলো সহজে সম্পাদন করতে পারি, কারণ ফাংশন একটি নির্দিষ্ট কাজ বা কমান্ড গ্রুপকে এক জায়গায় আবদ্ধ করে রাখে।
ফাংশনের সুবিধা:
- পুনঃব্যবহারযোগ্যতা: একবার তৈরি করলে ফাংশন বারবার ব্যবহার করা যায়।
- কোড সংগঠিত রাখা: কোডকে ছোট ছোট অংশে ভাগ করা যায়, যা কোড রিডেবিলিটি এবং মেইনটেইনেবিলিটি বাড়ায়।
- ডিবাগিং সহজ: কোডের ছোট ছোট অংশে বিভক্ত থাকলে ত্রুটি অনুসন্ধান (debugging) সহজ হয়।
PowerShell এ ফাংশন তৈরি করা
PowerShell-এ ফাংশন তৈরি করতে function কীওয়ার্ড ব্যবহার করা হয়। ফাংশন তৈরি করতে, ফাংশনের নাম, ইনপুট প্যারামিটার (যদি থাকে), এবং কোড ব্লক প্রয়োজন হয়।
সাধারণ ফাংশন তৈরি:
function FunctionName {
# ফাংশনের কাজ এখানে থাকবে
Write-Output "Hello, PowerShell!"
}
এই ফাংশনটি FunctionName নাম দিয়ে তৈরি করা হয়েছে, এবং যখন এটি চালানো হবে, এটি "Hello, PowerShell!" আউটপুট করবে।
ফাংশন কল করা:
ফাংশন কল করতে সরাসরি তার নাম ব্যবহার করা হয়:
FunctionName
ফাংশনে প্যারামিটার ব্যবহার
ফাংশনের মাধ্যমে আমরা প্যারামিটার পাঠাতে পারি, যা ফাংশনের মধ্যে নির্দিষ্ট মানের সঙ্গে কাজ করতে সহায়ক। প্যারামিটারগুলি ফাংশনের ইনপুট হিসেবে কাজ করে।
প্যারামিটার সহ ফাংশন:
function GreetUser {
param (
[string]$Name
)
Write-Output "Hello, $Name!"
}
এই ফাংশনে $Name প্যারামিটার গ্রহণ করা হয়েছে, যা ব্যবহারকারীকে সালাম জানানোর জন্য ব্যবহার করা হয়।
ফাংশন কল করে প্যারামিটার প্রদান:
GreetUser -Name "Alice"
এই কলটি আউটপুট দিবে:
Hello, Alice!
প্যারামিটার সহ ফাংশন আরও উন্নতভাবে তৈরি করা
ফাংশনে একাধিক প্যারামিটার ব্যবহার করা যেতে পারে, এবং প্যারামিটারগুলোর জন্য ডিফল্ট মানও নির্ধারণ করা সম্ভব।
function GreetUser {
param (
[string]$FirstName,
[string]$LastName = "Doe" # Default value
)
Write-Output "Hello, $FirstName $LastName!"
}
এখানে $LastName প্যারামিটারটির ডিফল্ট মান "Doe" দেওয়া হয়েছে। যদি এটি কল করার সময় প্রদান না করা হয়, তবে ডিফল্ট মানটি ব্যবহৃত হবে।
কল করার সময় প্যারামিটার প্রদান:
GreetUser -FirstName "John" -LastName "Smith"
আউটপুট:
Hello, John Smith!
ডিফল্ট প্যারামিটার মান ব্যবহার:
GreetUser -FirstName "Jane"
আউটপুট:
Hello, Jane Doe!
ফাংশন থেকে আউটপুট প্রদান
PowerShell ফাংশন থেকে আউটপুট পাঠানোর জন্য return কিওয়ার্ড ব্যবহার করা হয়, তবে PowerShell স্বয়ংক্রিয়ভাবে যে কোনো মান আউটপুট হিসেবে প্রদান করে, সেটা অন্তর্নিহিতভাবে return কিওয়ার্ড ছাড়াই।
return ব্যবহার:
function AddNumbers {
param (
[int]$num1,
[int]$num2
)
return $num1 + $num2
}
ফাংশনটি দুটি সংখ্যা যোগ করে ফলাফল রিটার্ন করবে।
ফাংশন কল করা:
$result = AddNumbers -num1 5 -num2 3
Write-Output $result
আউটপুট:
8
return ছাড়া আউটপুট:
function MultiplyNumbers {
param (
[int]$num1,
[int]$num2
)
$num1 * $num2 # Implicit return
}
ফাংশন ডিফিনিশন ও স্কোপ
PowerShell-এ ফাংশন একবার ডিফাইন করা হলে, তা ঐ স্কোপের মধ্যে অ্যাক্সেসযোগ্য থাকে। একটি ফাংশন যদি লোকাল স্কোপে ডিফাইন করা হয়, তবে অন্য স্কোপ থেকে তা অ্যাক্সেস করা সম্ভব নয়, কিন্তু গ্লোবাল স্কোপে ডিফাইন করলে তা পুরো সেশনে ব্যবহারযোগ্য হয়।
গ্লোবাল স্কোপে ফাংশন তৈরি:
function GlobalFunction {
Write-Output "This is a global function"
}
# GlobalFunction এখন সেশন জুড়ে অ্যাক্সেসযোগ্য
সারাংশ
PowerShell-এ ফাংশন ব্যবহারের মাধ্যমে আপনি কোডের পুনঃব্যবহারযোগ্যতা এবং পরিস্কার সংগঠন নিশ্চিত করতে পারেন। ফাংশন তৈরি করতে function কীওয়ার্ড, প্যারামিটার ব্যবহারের জন্য param ব্লক এবং আউটপুট পাঠানোর জন্য return বা সরাসরি মান ব্যবহার করা হয়।
PowerShell-এ ফাংশন তৈরি এবং ব্যবহার করা একটি শক্তিশালী পদ্ধতি, যা স্ক্রিপ্ট বা কমান্ডের পুনরাবৃত্তি কমাতে এবং কোডকে আরও সংগঠিত করতে সাহায্য করে। ফাংশনের মাধ্যমে আপনি নির্দিষ্ট কার্যক্রম বা লজিক একটি একক ইউনিট হিসেবে সংজ্ঞায়িত করতে পারেন। ফাংশনগুলিতে পারামিটারস (Parameters) এবং রিটার্ন ভ্যালু (Return Values) ব্যবহৃত হয়, যা ফাংশনের আউটপুট এবং ইনপুট নিয়ন্ত্রণ করতে সহায়ক।
Function Parameters (ফাংশন প্যারামিটারস)
PowerShell-এ ফাংশন প্যারামিটারস ব্যবহার করে আপনি ফাংশনের জন্য ইনপুট প্রদান করতে পারেন। প্যারামিটারস ফাংশনের মধ্যে মান প্রেরণ করার জন্য ব্যবহৃত হয় এবং এগুলি ফাংশনের কার্যকারিতা নিয়ন্ত্রণ করে।
1. Basic Function with Parameters
PowerShell-এ ফাংশন তৈরি করতে, function কিওয়ার্ড ব্যবহার করা হয় এবং প্যারামিটারস নির্ধারণ করা হয় $param ব্লকে।
function Add-Numbers {
param(
[int]$a,
[int]$b
)
return $a + $b
}
# ফাংশন কল
Add-Numbers -a 5 -b 3
এখানে, Add-Numbers ফাংশন দুটি প্যারামিটার নেবে: $a এবং $b। ফাংশনটি তাদের যোগফল রিটার্ন করবে।
2. Positional Parameters (পজিশনাল প্যারামিটারস)
PowerShell-এ প্যারামিটারস পজিশনাল হতে পারে, অর্থাৎ তাদের আদেশ অনুসারে মান প্রদান করা হয়। উদাহরণস্বরূপ:
function Greet-User {
param(
$name,
$age
)
return "Hello $name, you are $age years old."
}
# পজিশনাল প্যারামিটার ব্যবহার
Greet-User "John" 30
এখানে, প্রথম প্যারামিটার $name এবং দ্বিতীয় প্যারামিটার $age নির্দিষ্ট আদেশে দেওয়া হয়েছে। এভাবে প্যারামিটারগুলোর মান প্রদান করা হয়।
3. Named Parameters (নামকৃত প্যারামিটারস)
PowerShell-এ আপনি প্যারামিটারগুলোর নাম উল্লেখ করে মান প্রেরণ করতে পারেন। এটি বিশেষ করে প্যারামিটারদের মধ্যে বিভ্রান্তি এড়াতে সহায়তা করে।
function Greet-User {
param(
[string]$name,
[int]$age
)
return "Hello $name, you are $age years old."
}
# নামকৃত প্যারামিটার ব্যবহার
Greet-User -name "Alice" -age 25
এখানে, $name এবং $age প্যারামিটারদের নামকরণ করা হয়েছে এবং তাদের মান আর্গুমেন্ট হিসেবে দেওয়া হয়েছে।
4. Default Parameter Values (ডিফল্ট প্যারামিটার ভ্যালু)
PowerShell-এ আপনি ফাংশন প্যারামিটারসের জন্য ডিফল্ট মান নির্ধারণ করতে পারেন, যা ব্যবহারকারী যখন কোনো মান প্রদান না করে, তখন ব্যবহার করা হয়।
function Greet-User {
param(
[string]$name = "Guest",
[int]$age = 20
)
return "Hello $name, you are $age years old."
}
# ডিফল্ট মান ব্যবহার
Greet-User
# কাস্টম মান প্রদান
Greet-User -name "Bob" -age 35
এখানে, যদি প্যারামিটারগুলির জন্য কোনো মান প্রদান না করা হয়, তবে ডিফল্ট মান (Guest এবং 20) ব্যবহার হবে।
Return Values (রিটার্ন ভ্যালু)
ফাংশন থেকে মান ফেরত (return) করতে, PowerShell-এ return কিওয়ার্ড ব্যবহার করা হয়, তবে আপনি প্যারামিটারগুলির মান সরাসরি return না করে শুধুমাত্র ফাংশনের শেষে লিখে ফেলে দিতে পারেন এবং PowerShell তা গোপনে রিটার্ন করবে।
1. Basic Return Statement
function Add-Numbers {
param(
[int]$a,
[int]$b
)
return $a + $b
}
# ফাংশন কল এবং আউটপুট দেখুন
$sum = Add-Numbers -a 5 -b 3
Write-Output $sum
এখানে, Add-Numbers ফাংশনটি দুটি সংখ্যা যোগফল রিটার্ন করবে এবং আমরা এটি $sum ভেরিয়েবলে সঞ্চয় করে আউটপুট হিসেবে প্রদর্শন করব।
2. Implicit Return (অপ্রকাশিত রিটার্ন)
PowerShell ফাংশনগুলি যেকোনো মান সরাসরি return কিওয়ার্ড ব্যবহার না করে রিটার্ন করতে পারে, কারণ ফাংশনের শেষ লাইনটি সাধারণত রিটার্ন মান হিসেবে বিবেচিত হয়।
function Multiply-Numbers {
param(
[int]$a,
[int]$b
)
$result = $a * $b
$result # কোনো 'return' কিওয়ার্ড ব্যবহৃত হয়নি, তবে এটি রিটার্ন হবে
}
# ফাংশন কল
$prod = Multiply-Numbers -a 4 -b 3
Write-Output $prod
এখানে, $result ভেরিয়েবলটি ফাংশনের শেষ লাইন হিসাবে রিটার্ন হবে, তাই return কিওয়ার্ড ব্যবহার করার প্রয়োজন নেই।
3. Multiple Return Values (একাধিক রিটার্ন ভ্যালু)
PowerShell-এ আপনি একটি ফাংশন থেকে একাধিক মানও রিটার্ন করতে পারেন। এটি একটি অ্যারে, অবজেক্ট বা হ্যাশটেবিলের মাধ্যমে করা সম্ভব।
function Get-UserInfo {
param(
[string]$name,
[int]$age
)
$userInfo = @{
Name = $name
Age = $age
}
return $userInfo
}
# ফাংশন কল এবং আউটপুট
$user = Get-UserInfo -name "David" -age 40
Write-Output $user.Name
Write-Output $user.Age
এখানে, একটি হ্যাশটেবিল রিটার্ন করা হয়েছে, যাতে ব্যবহারকারীর নাম এবং বয়স রয়েছে, যা পরে অ্যাক্সেস করা যেতে পারে।
Summary
PowerShell ফাংশন প্যারামিটারস এবং রিটার্ন ভ্যালু ব্যবহারের মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা, পরিষ্কারতা এবং কার্যকারিতা বৃদ্ধি করা সম্ভব। প্যারামিটারস ফাংশনের ইনপুট নিয়ন্ত্রণ করে এবং রিটার্ন ভ্যালু গুলি ফাংশনের আউটপুট হিসেবে কাজ করে।
PowerShell-এ Advanced Function এবং Cmdlet Binding এর মাধ্যমে আপনি আরও শক্তিশালী এবং নমনীয় ফাংশন তৈরি করতে পারেন। এটি PowerShell স্ক্রিপ্টিংকে আরও প্রফেশনাল এবং আধুনিক করে তোলে, বিশেষত যখন আপনাকে কমপ্লেক্স অপারেশন, প্যারামিটার ভ্যালিডেশন এবং ডিফল্ট মান ব্যবহার করতে হয়। এগুলি আপনাকে কমান্ডলেটের মতো কার্যকর ফাংশন তৈরি করতে সহায়তা করে।
Advanced Function
Advanced Function হলো PowerShell-এ এমন একটি ফাংশন যা সাধারণ ফাংশনের চেয়ে বেশি ক্ষমতাসম্পন্ন। এগুলি CmdletBinding অ্যাট্রিবিউট ব্যবহার করে আরও উন্নত ফিচার যোগ করতে সক্ষম হয়, যেমন প্যারামিটার ভ্যালিডেশন, প্যারামিটার ডিফল্ট মান, এবং আরও।
CmdletBinding প্যারামিটার এবং আর্গুমেন্টের সাথে কাজ করার জন্য অগ্রসর ফাংশনে ব্যবহার করা হয়। এটি cmdlet এর মতো আচরণ করতে সক্ষম করে।
Advanced Function এর মৌলিক গঠন:
function FunctionName {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$Param1,
[Parameter(Position=0, HelpMessage="Enter your age")]
[int]$Param2
)
# Function logic goes here
Write-Host "The value of Param1 is: $Param1"
Write-Host "The value of Param2 is: $Param2"
}
উদাহরণ:
function Get-Greeting {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[string]$Name,
[int]$Age = 25 # Default value
)
Write-Host "Hello, $Name! You are $Age years old."
}
CmdletBinding এর মাধ্যমে আপনি -Verbose, -Debug, -ErrorAction, এবং -WhatIf এর মতো বিল্ট-ইন বৈশিষ্ট্য ব্যবহার করতে পারেন, যা কমান্ডলেটের মতোই ফাংশনের ক্ষমতা বাড়ায়।
CmdletBinding এর সুবিধা
- Automatic Parameter Binding: CmdletBinding দ্বারা PowerShell নিজে প্যারামিটারগুলিকে বাইন্ড করে, যাতে আপনি
-Verbose,-Debug, এবং-WhatIfফ্ল্যাগস ব্যবহার করতে পারেন। - Mandatory Parameters: কিছু প্যারামিটারকে "Mandatory" (অবশ্যই প্রদান করতে হবে) হিসাবে চিহ্নিত করা যায়।
- Default Parameter Values: প্যারামিটারগুলির জন্য ডিফল্ট মান সেট করা সম্ভব, যাতে ব্যবহারকারী কোন মান না দিলে, স্ক্রিপ্টে ডিফল্ট মান স্বয়ংক্রিয়ভাবে ব্যবহার হয়।
- Positional Parameters: কিছু প্যারামিটারকে নির্দিষ্ট অবস্থানে বেঁধে রাখা যায়, যাতে কমান্ড ব্যবহারকারীরা সেগুলো নির্দিষ্ট অবস্থানে প্রদান করতে পারেন।
- Parameter Validation: প্যারামিটার ভ্যালিডেশন যেমন
ValidateRange,ValidateSet,ValidatePattern, ইত্যাদি দিয়ে ফাংশনের ইনপুট যাচাই করা যায়।
CmdletBinding এর ব্যবহার
1. Mandatory Parameters: (অবশ্যই প্রদান করতে হবে)
function Test-MandatoryParam {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[string]$Name
)
Write-Host "Hello, $Name!"
}
উপরের ফাংশনে Name প্যারামিটারটি Mandatory হিসেবে চিহ্নিত করা হয়েছে, অর্থাৎ এটি ব্যবহারকারীকে অবশ্যই প্রদান করতে হবে।
2. Positional Parameters: (নির্দিষ্ট অবস্থানে ইনপুট)
function Test-PositionalParams {
[CmdletBinding()]
param (
[Parameter(Position=0)]
[string]$FirstName,
[Parameter(Position=1)]
[string]$LastName
)
Write-Host "Full Name: $FirstName $LastName"
}
এখানে, FirstName এবং LastName প্যারামিটারগুলিকে Positional প্যারামিটার হিসেবে চিহ্নিত করা হয়েছে। এগুলোর জন্য নির্দিষ্ট অবস্থান নির্ধারণ করা হয়েছে।
3. Default Parameter Values: (ডিফল্ট মান)
function Test-DefaultParam {
[CmdletBinding()]
param (
[Parameter()]
[string]$Name = "John Doe"
)
Write-Host "Hello, $Name!"
}
এখানে $Name প্যারামিটারটি ডিফল্টভাবে "John Doe" রয়েছে। যদি ব্যবহারকারী কোন মান প্রদান না করে, তবে এটি সেই ডিফল্ট মানটি ব্যবহার করবে।
4. Validate Parameters: (প্যারামিটার ভ্যালিডেশন)
function Test-ValidateParam {
[CmdletBinding()]
param (
[Parameter()]
[ValidateRange(1, 100)]
[int]$Age
)
Write-Host "Your age is $Age"
}
এখানে $Age প্যারামিটারটি 1 থেকে 100-এর মধ্যে থাকতে হবে, অন্যথায় একটি ত্রুটি (Error) দেখানো হবে।
PowerShell ফাংশন এবং Cmdlet এর মধ্যে পার্থক্য
PowerShell ফাংশন এবং Cmdlet-এর মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে:
| বৈশিষ্ট্য | Function | Cmdlet |
|---|---|---|
| লিখন | PowerShell স্ক্রিপ্টে লিখা হয় | .NET ক্লাস দ্বারা তৈরি |
| পারফরম্যান্স | তুলনামূলকভাবে ধীর | বেশি দ্রুত |
| এক্সটেনশন | সাধারণ ফাংশন | প্রচুর এক্সটেনশন এবং অ্যাডভান্সড কাস্টমাইজেশন |
| কাস্টমাইজেশন | CmdletBinding দ্বারা কাস্টমাইজ করা যায় | Cmdlet এর জন্য প্রোগ্রামিং প্রয়োজন |
| ট্রেসিং | Verbose, Debug, ErrorAction ইত্যাদি সুবিধা নেই | Verbose, Debug, ErrorAction ইত্যাদি বিল্ট-ইন থাকে |
সারাংশ
PowerShell-এ Advanced Function এবং CmdletBinding এর মাধ্যমে আপনি আরও শক্তিশালী, নমনীয় এবং প্রফেশনাল ফাংশন তৈরি করতে পারেন। এটি স্ক্রিপ্টিংয়ের ক্ষমতা বৃদ্ধি করে, প্যারামিটার ভ্যালিডেশন, ডিফল্ট মান, এবং প্যারামিটার সম্পর্কিত আরও উন্নত ফিচার সরবরাহ করে। এর মাধ্যমে আপনি cmdlet-এর মতো শক্তিশালী এবং দক্ষ স্ক্রিপ্ট তৈরি করতে পারবেন।
PowerShell স্ক্রিপ্ট (.ps1 ফাইল) তৈরি করা এবং চালানো অত্যন্ত সহজ এবং কার্যকর একটি প্রক্রিয়া। PowerShell স্ক্রিপ্ট ব্যবহারের মাধ্যমে আপনি সিস্টেম অ্যাডমিনিস্ট্রেটিভ কাজগুলো অটোমেট করতে পারেন, যেমন ফাইল ম্যানিপুলেশন, সিস্টেম কনফিগারেশন, এবং আরও অনেক কাজ। নিচে আমরা PowerShell স্ক্রিপ্ট তৈরি এবং রান করার পদ্ধতি আলোচনা করব।
PowerShell Script তৈরি করা
PowerShell স্ক্রিপ্ট তৈরি করতে একটি টেক্সট এডিটর (যেমন Notepad, Visual Studio Code বা PowerShell ISE) ব্যবহার করা যেতে পারে। একটি PowerShell স্ক্রিপ্টের ফাইল এক্সটেনশন .ps1 হতে হবে।
1. PowerShell Script লেখার ধাপসমূহ:
- টেক্সট এডিটর খুলুন:
আপনি যেকোনো টেক্সট এডিটর ব্যবহার করতে পারেন, যেমন:- Notepad (Windows এর ডিফল্ট)
- Visual Studio Code (VS Code) (অবশ্যই PowerShell এক্সটেনশন সহ)
- PowerShell ISE
- স্ক্রিপ্ট লেখুন:
PowerShell কমান্ডগুলি.ps1ফাইলে লিখুন। উদাহরণস্বরূপ:
উদাহরণ:
# HelloWorld.ps1
Write-Output "Hello, World!"
এটি একটি সহজ স্ক্রিপ্ট যা "Hello, World!" আউটপুট করবে।
- ফাইল সেভ করুন:
স্ক্রিপ্ট লেখার পর ফাইলটি.ps1এক্সটেনশন দিয়ে সেভ করুন, যেমনHelloWorld.ps1।
PowerShell Script রান করা
PowerShell স্ক্রিপ্ট রান করার জন্য আপনাকে একটি PowerShell টার্মিনাল ব্যবহার করতে হবে এবং .ps1 ফাইলটি সঠিকভাবে এক্সিকিউট করতে হবে।
1. PowerShell Execution Policy চেক করা
Windows-এ স্ক্রিপ্ট রান করার আগে, আপনাকে নিশ্চিত হতে হবে যে আপনার Execution Policy সঠিকভাবে কনফিগার করা আছে। সাধারণত, Windows PowerShell স্ক্রিপ্টের জন্য নিরাপত্তা কারণে Restricted Execution Policy থাকে, যা স্ক্রিপ্ট রান করার অনুমতি দেয় না।
Execution Policy পরিবর্তন করার জন্য:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
এটি স্থানীয় স্ক্রিপ্টগুলি (যেমন আপনার নিজস্ব লেখা স্ক্রিপ্ট) চালানোর অনুমতি দেয়। আপনি চাইলে Unrestricted বা Bypass ব্যবহার করতে পারেন, তবে RemoteSigned নিরাপত্তা বজায় রাখতে সাহায্য করে।
2. PowerShell Script রান করা
PowerShell স্ক্রিপ্ট রান করতে, স্ক্রিপ্টের পাথ নির্দিষ্ট করে PowerShell টার্মিনাল থেকে ফাইলটি এক্সিকিউট করুন।
- PowerShell চালু করুন:
Start Menu-এ PowerShell লিখে PowerShell টার্মিনাল খুলুন (অথবা আপনিWindows + Xটিপে Windows PowerShell নির্বাচন করতে পারেন)। - Script ফাইলের পাথ নির্দিষ্ট করুন:
PowerShell স্ক্রিপ্ট রান করার জন্য, ফাইলের পাথ লিখে কমান্ড দিন:
উদাহরণ:
C:\Scripts\HelloWorld.ps1
অথবা, যদি স্ক্রিপ্টটি বর্তমান ডিরেক্টরিতে থাকে, তাহলে:
.\HelloWorld.ps1
- Script রান করুন:
স্ক্রিপ্ট রান করলে, আপনি তার আউটপুট দেখতে পারবেন। উদাহরণে, এটিHello, World!আউটপুট করবে।
3. PowerShell থেকে External Program চালানো
আপনি PowerShell স্ক্রিপ্টে বাহ্যিক প্রোগ্রামও চালাতে পারেন। উদাহরণস্বরূপ, আপনি একটি .exe ফাইল বা অন্য স্ক্রিপ্টও চালাতে পারেন।
উদাহরণ:
Start-Process "notepad.exe"
এটি Notepad অ্যাপ্লিকেশন খুলে দেবে।
PowerShell Script Debugging
PowerShell স্ক্রিপ্টের মধ্যে ত্রুটি (error) থাকলে সেগুলো সনাক্ত এবং সমাধান করার জন্য ডিবাগিং প্রয়োজন হতে পারে।
1. Write-Debug কমান্ড ব্যবহার করা
Write-Debug কমান্ডটি স্ক্রিপ্টে ডিবাগ মেসেজ প্রিন্ট করতে ব্যবহৃত হয়। ডিবাগ মোড সক্রিয় করতে PowerShell এর $DebugPreference ভেরিয়েবল ব্যবহার করা হয়।
উদাহরণ:
$DebugPreference = "Continue"
Write-Debug "This is a debug message"
2. Breakpoints ব্যবহার করা
PowerShell ISE বা Visual Studio Code ব্যবহার করে স্ক্রিপ্টের মধ্যে ব্রেকপয়েন্ট সেট করতে পারেন। এতে স্ক্রিপ্ট এক্সিকিউশন বন্ধ হয়ে যায় নির্দিষ্ট লাইনে, এবং আপনি একে একে কোড লাইন চেক করতে পারেন।
PowerShell Script Scheduling
PowerShell স্ক্রিপ্টটি একটি নির্দিষ্ট সময়ে বা নিয়মিত চালানোর জন্য আপনি Task Scheduler ব্যবহার করতে পারেন।
- Task Scheduler খুলুন:
Windows-এ Task Scheduler খুলুন এবং একটি নতুন টাস্ক তৈরি করুন। - PowerShell Script নির্দিষ্ট করুন:
Task Scheduler-এ Action হিসেবে "Start a Program" নির্বাচন করুন এবং স্ক্রিপ্টের পাথ দিন।
এটি স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময়ে আপনার PowerShell স্ক্রিপ্ট রান করবে।
সারাংশ
PowerShell স্ক্রিপ্ট তৈরি এবং রান করা সহজ এবং সিস্টেম অটোমেশন এবং অ্যাডমিনিস্ট্রেশন টাস্ক সম্পাদনে অত্যন্ত কার্যকর। আপনি টেক্সট এডিটর ব্যবহার করে .ps1 ফাইল তৈরি করতে পারেন এবং PowerShell টার্মিনাল থেকে সেগুলো রান করতে পারেন। PowerShell স্ক্রিপ্টের মধ্যে ত্রুটি শনাক্ত করার জন্য ডিবাগিং টুলস এবং স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে রান করার জন্য Task Scheduler ব্যবহার করা যায়।
Read more