আমার ব্যাচ ফাইলে, আমি পাওয়ারশেল স্ক্রিপ্টটিকে এভাবে কল করি:
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
এখন, আমি একটি স্ট্রিং প্যারামিটারটি পাস করতে চাই START_DEV.ps1। ধরা যাক প্যারামিটারটি w=Dev।
কিভাবে আমি এটি করতে পারব?
আমার ব্যাচ ফাইলে, আমি পাওয়ারশেল স্ক্রিপ্টটিকে এভাবে কল করি:
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
এখন, আমি একটি স্ট্রিং প্যারামিটারটি পাস করতে চাই START_DEV.ps1। ধরা যাক প্যারামিটারটি w=Dev।
কিভাবে আমি এটি করতে পারব?
উত্তর:
ধরা যাক আপনি Devআপনার ব্যাচ ফাইল থেকে প্যারামিটার হিসাবে স্ট্রিংটি পাস করতে চান :
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev"
আপনার পাওয়ারশেল স্ক্রিপ্টের মাথা ভিতরে রাখুন:
$w = $args[0] # $w would be set to "Dev"
আপনি যদি বিল্ট-ইন ভেরিয়েবলটি ব্যবহার করতে চান এটি এটি $args। অন্যথায়:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 -Environment \"Dev\""
এবং আপনার পাওয়ারশেল স্ক্রিপ্টের মাথার ভিতরে:
param([string]$Environment)
এটি যদি আপনি একটি নামের প্যারামিটার চান।
আপনি ত্রুটি স্তর ফিরে পেতে আগ্রহী হতে পারে:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev; exit $LASTEXITCODE"
ব্যাচের ফাইলের ভিতরে ত্রুটি স্তরটি উপলব্ধ থাকবে %errorlevel%।
ধরে নিচ্ছি আপনার স্ক্রিপ্টটি নীচের স্নিপেট এবং নামের টেস্টার্গস.পিএস 1 এর মতো কিছু
param ([string]$w)
Write-Output $w
আপনি কমান্ডলাইনে এটিকে কল করতে পারেন:
PowerShell.Exe -File C:\scripts\testargs.ps1 "Test String"
এটি কনসোলে "টেস্ট স্ট্রিং" (ডাব্লু / ও কোট) মুদ্রণ করবে। "টেস্ট স্ট্রিং" স্ক্রিপ্টে $ w এর মান হয়ে যায়।
যখন কোনও স্ক্রিপ্ট লোড হয়, যে কোনও প্যারামিটারগুলি পাস হয়ে থাকে তা স্বয়ংক্রিয়ভাবে একটি বিশেষ ভেরিয়েবলগুলিতে লোড হয় $args। আপনি এটি প্রথমে ঘোষণা না করে আপনার স্ক্রিপ্টে উল্লেখ করতে পারেন।
উদাহরণস্বরূপ, নামক একটি ফাইল তৈরি করুন test.ps1এবং কেবল $argsএকটি লাইনে ভেরিয়েবল থাকুন । স্ক্রিপ্টটি এভাবে চালু করা, নিম্নলিখিত আউটপুট উত্পন্ন করে:
PowerShell.exe -File test.ps1 a b c "Easy as one, two, three"
a
b
c
Easy as one, two, three
একটি সাধারণ সুপারিশ হিসাবে, পাওয়ারশেলকে সরাসরি কল করে স্ক্রিপ্টের আবেদন করার সময় আমি -Fileবিকল্পটির সাথে স্পষ্টভাবে অনুরোধ করার পরিবর্তে বিকল্পটি ব্যবহার করার পরামর্শ দেব &- এটি কমান্ড লাইনটিকে কিছুটা পরিষ্কার করতে পারে, বিশেষত যদি আপনাকে নেস্টেড উদ্ধৃতিগুলির সাথে ডিল করতে হয়।
PS1 ফাইলের শীর্ষে প্যারামিটারের ঘোষণাটি যুক্ত করুন
param(
# Our preferred encoding
[parameter(Mandatory=$false)]
[ValidateSet("UTF8","Unicode","UTF7","ASCII","UTF32","BigEndianUnicode")]
[string]$Encoding = "UTF8"
)
write ("Encoding : {0}" -f $Encoding)
C:\temp> .\test.ps1 -Encoding ASCII
Encoding : ASCII
@ এমিলিয়ানোর উত্তরটি দুর্দান্ত। আপনি নামের মতো প্যারামিটারগুলিও পাস করতে পারেন:
powershell.exe -Command 'G:\Karan\PowerShell_Scripts\START_DEV.ps1' -NamedParam1 "SomeDataA" -NamedParam2 "SomeData2"
নোট কলের বাইরে প্যারামিটারগুলি নোট করুন এবং আপনি ব্যবহার করবেন:
[parameter(Mandatory=$false)]
[string]$NamedParam1,
[parameter(Mandatory=$false)]
[string]$NamedParam2