করতে সংক্ষেপ এবং পরিপূর্ণ বিদ্যমান উত্তর , উইন্ডোস PowerShell v5.1 / PowerShell কোর 7.0.0-preview.4 হিসাবে:
ডেভিড মহুন্দ্রোর উত্তর যথাযথভাবে নির্দেশ করে যে পরামিতিগুলির পরিবর্তে [bool]
আপনার পাওয়ারশলে [switch]
প্যারামিটার ব্যবহার করা উচিত , যেখানে উপস্থিতি বনাম স্যুইচ নামের অনুপস্থিতি ( -Unify
নির্দিষ্ট বনাম নির্দিষ্ট নয় ) এর মান বোঝায় , যা মূল সমস্যাটি দূরে সরিয়ে দেয়।
তবে, উপলক্ষে আপনাকে এখনও স্যুইচ মানটি স্পষ্টভাবে পাস করার প্রয়োজন হতে পারে , বিশেষত যদি আপনি প্রোগ্রামের মাধ্যমে একটি কমান্ড লাইন তৈরি করে থাকেন :
PowerShell ইন কোর , মূল সমস্যা (বর্ণিত সম্রাট XLII এর উত্তর ) হয়েছে সংশোধন করা হয়েছে ।
এটি হল, নামের $true
একটি [switch]
প্যারামিটারে স্পষ্টভাবে পাস করার জন্য -Unify
আপনি এখন লিখতে পারেন:
pwsh -File .\RunScript.ps1 -Unify:$true # !! ":" separates name and value, no space
নিম্নলিখিত মান ব্যবহার করা যেতে পারে: $false
, false
, $true
, true
, কিন্তু মনে রাখবেন যে ক্ষণস্থায়ী 0
বা 1
না না হবে।
কীভাবে স্যুইচটির নামটি মান থেকে পৃথক করা হয় :
এবং দুটিয়ের মধ্যে কোনও সাদা স্থান থাকতে হবে না তা নোট করুন ।
দ্রষ্টব্য: আপনি যদি [bool]
একটি [switch]
(যা সাধারণত আপনার করা উচিত নয়) এর পরিবর্তে কোনও পরামিতি ঘোষণা করেন তবে আপনাকে অবশ্যই একই বাক্য গঠন ব্যবহার করতে হবে; যদিও কাজ করা -Unify $false
উচিত , এটি বর্তমানে তা করে না - এই গিটহাবটি সমস্যাটি দেখুন ।
ইন উইন্ডোজ PowerShell , মূল সমস্যাটি থেকে দেওয়া যে উইন্ডোজ PowerShell আর সক্রিয়ভাবে বিকশিত হয় - - এবং সংশোধন করা হয়েছে পেতে করার সম্ভাবনা কম।
:: # From cmd.exe
powershell -Command "& .\RunScript.ps1 -Unify:$true"
সঙ্গে -Command
আপনি কার্যকরভাবে একটি পার করছি PowerShell কোডের টুকরা এবং PowerShell ভিতরে ক্ষণস্থায়ী - যা পরে যথারীতি মূল্যায়ন করা হয় $true
এবং $false
কাজ (কিন্তু না true
এবং false
, যেমন এখন সঙ্গে গৃহীত-File
)।
গুহাত :
ব্যবহারের -Command
ফলে আপনার যুক্তিগুলির অতিরিক্ত ব্যাখ্যা হতে পারে যেমন এর মধ্যে $
অক্ষর রয়েছে। (সহ -File
, যুক্তিগুলি আক্ষরিক )।
ব্যবহারের -Command
ফলে পৃথক প্রস্থান কোড আসতে পারে ।
বিশদ জন্য, এই উত্তর দেখুন এবং এই উত্তর দেখুন ।