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 ( -Unify
Belirtilen 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ı $true
bir [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
, true
geçen değil not olduğunu 0
veya 1
does 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.
-Command
Bunun 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
true
false
-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 .