To özetlemek ve tamamlayıcı mevcut cevapları Windows PowerShell v5.1 / PowerShell Çekirdek 7.0.0-preview.4 itibariyle:
David Mohundro cevabı haklı olduğunu işaret yerine [bool]parametreleri kullanmanız gerektiğini [switch]parametreleri PowerShell , varlığı vs yokluğu anahtarı adının ( -UnifyBelirtilen vs değil belirtilen) değerini ima orijinal problem ortadan kalkmış yapar.
Bununla birlikte, bazen , özellikle programlı olarak bir komut satırı oluşturuyorsanız, anahtar değerini açık bir şekilde geçirmeniz gerekebilir :
In PowerShell Çekirdek , orijinal sorun (anlatıldığı İmparator XLII cevabı ) olmuştur sabit .
Yani, adlı $truebir [switch]parametreye açıkça geçmek-Unify şimdi yazabilirsiniz:
pwsh -File .\RunScript.ps1 -Unify:$true # !! ":" separates name and value, no space
Aşağıdaki değerler kullanılabilir: $false, false, $true, truegeçen değil not olduğunu 0veya 1does not işi.
Anahtar adının değerden nasıl ayrıldığına :ve boşluk olmaması gerektiğine dikkat edin ve ikisi arasında .
Not: a [bool]yerine bir parametre bildirirseniz [switch](genellikle yapmamalısınız), aynı sözdizimini kullanmanız gerekir; olsa -Unify $false gerekir çalışmak, şu anda değil - bkz bu GitHub sorunu .
In Windows PowerShell , özgün problem devam Windows PowerShell artık aktif gelişmiş olduğu göz önüne alındığında - - ve sabit almak mümkün değildir.
Önerilen geçici çözüm LarsWA cevabı dayandığı halde - resmi yardım konusuna bu yazı olarak - does not v5.1 iş
- Bu GitHub sorunu , belgelerin düzeltilmesini ister ve ayrıca geçici çözümün etkisizliğini gösteren bir test komutu sağlar.
-CommandBunun yerine kullanmak -File, tek etkili çözümdür :
:: # From cmd.exe
powershell -Command "& .\RunScript.ps1 -Unify:$true"
Bununla birlikte , daha sonra her zamanki gibi değerlendirilen bir PowerShell kodunu-Command etkili bir şekilde geçiriyorsunuz - ve PowerShell içinde geçiyor ve çalışıyor (ancak değil ve şimdi de kabul edildiği gibi ).$true$false truefalse-File
Uyarılar :
Kullanmak -Command, $karakter içeriyor gibi argümanlarınızın ek yorumlanmasına neden olabilir . (ile -File, bağımsız değişkenler değişmezdir ).
Kullanmak farklı bir çıkış koduna-Command neden olabilir .
Ayrıntılar için bu yanıta ve bu yanıta bakın .