করতে সংক্ষেপ এবং পরিপূর্ণ বিদ্যমান উত্তর , উইন্ডোস 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ফলে পৃথক প্রস্থান কোড আসতে পারে ।
বিশদ জন্য, এই উত্তর দেখুন এবং এই উত্তর দেখুন ।