SORU
28 Ocak 2010, PERŞEMBE


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
28 Ocak 2010, PERŞEMBE


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012