Nasıl PowerShell komut satırı değişkenleri işlemek için
Bu nedir "" komut satırı işlemek için yol argümanlar? en iyi
"Yol ve sonuç olarak bir şey kadar basit bir olayı nasıl takıldım: . en iyi birkaç cevap var gibi görünüyor
script.ps1 /n name /d domain
VE
script.ps1 /d domain /n name.
Bu daha iyi yapabilecek bir eklenti var mı? Tekerleği yeniden icat olduğumu biliyorum.
Zaten hoş değil ve kesinlikle değil ben açıkçası "".. çalışır ve ÇİRKİN ama. en iyi
for ( $i = 0; $i -lt $args.count; $i ) {
if ($args[ $i ] -eq "/n"){ $strName=$args[ $i 1 ]}
if ($args[ $i ] -eq "-n"){ $strName=$args[ $i 1 ]}
if ($args[ $i ] -eq "/d"){ $strDomain=$args[ $i 1 ]}
if ($args[ $i ] -eq "-d"){ $strDomain=$args[ $i 1 ]}
}
Write-Host $strName
Write-Host $strDomain
CEVAP
Tekerleği yeniden icat. Normal PowerShell komut parametreleri script.ps1 -server http://devserver gibi - ile başlıyor
Sonra dosyanın başında (bkz: öğretici: http://devcentral.f5.com/weblogs/Joe/archive/2009/01/13/powershell-abcs---p-is-for-parameters.aspx) param bölümünde onları ele
Ayrıca parametreler için varsayılan değerler atamak, mevcut değilse konsoldan onları okumak veya komut dosyası yürütme durdurabilirsiniz:
param (
[string]$server = "http://defaultserver",
[string]$username = $(throw "-username is required."),
[string]$password = $( Read-Host "Input password, please" )
)
İçinde komut dosyası sadece
write-output $server
tüm parametreleri yana olmak değişkenleri komut dosyası kapsamında kullanılabilir.
Bu örnekte, $server alır varsayılan değer eğer script denilen olmadan, komut dosyası durur atlarsanız -username parametre ve sorar, terminal giriş -password atlanmış.
Güncelleme: Bir de "" (boolean doğru/yanlış bir parametre) PowerShell komut dosyası için. bayrak geçirmek isteyebilirsiniz Örneğin, komut "kuvvet" script force kullanıldığında daha dikkatli bir modda çalışır. bir kabul olabilir
Bunun için anahtar [switch] parametre türü vardır:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Komut dosyası içinde bu gibi çalışır:
if ($force) {
//deletes a file or does something "bad"
}
Komut çağrılırken şimdi, böyle bayrak parametre/anahtar ayarlamak istiyorum:
.\yourscript.ps1 -server "http://otherserver" -force
Eğer açıkça bayrağı ayarlı değil, bu devlet istiyorsanız, bunun için özel bir sözdizimi vardır
.\yourscript.ps1 -server "http://otherserver" -force:$false

Nasıl bir Perl programı için komut sat...
Nasıl ps1 PowerShell bir dosya için ko...
Nasıl PostgreSQL komut satırı yardımcı...
Nasıl komisyon bir görev için komut sa...
Nasıl bir toplu iş dosyası komut satır...