W jaki sposób przekazać wiele parametrów ciągów do skryptu PowerShell?

głosy
31

Staram się zrobić jakiś ciąg konkatenacji / formatowanie, ale to wprowadzenie wszystkich parametrów do pierwszego zastępczy.

Kod

function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
    # Command to create an IIS application pool
    $AppPoolScript = cscript adsutil.vbs CREATE w3svc/AppPools/$AppPoolName IIsApplicationPool`n
    $AppPoolScript += cscript adsutil.vbs SET w3svc/AppPools/$AppPoolName/WamUserName $AppPoolUser`n
    $AppPoolScript += cscript adsutil.vbs SET w3svc/AppPools/$AppPoolName/WamUserPass $AppPoolPass`n
    $AppPoolScript += cscript adsutil.vbs SET w3svc/AppPools/$AppPoolName/AppPoolIdentityType 3

    return $AppPoolScript
}
$s = CreateAppPoolScript(name, user, pass)
write-host $s

Wydajność

cscript adsutil.vbs CREATE w3svc/AppPools/name user pass IIsApplicationPool
cscript adsutil.vbs SET w3svc/AppPools/name user pass/WamUserName 
cscript adsutil.vbs SET w3svc/AppPools/name user pass/WamUserPass 
cscript adsutil.vbs SET w3svc/AppPools/name user pass/AppPoolIdentityType 3
Utwórz 22/08/2008 o 17:03
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
40

Stracić nawiasy i przecinki.

Nazywając swoją funkcję jako:

$s = CreateAppPoolScript "name" "user" "pass"

daje:

cscript adsutil.vbs CREATE "w3svc/AppPools/name" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserName" "user"
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserPass" "pass"
cscript adsutil.vbs SET "w3svc/AppPools/name/AppPoolIdentityType" 3
Odpowiedział 22/08/2008 o 17:15
źródło użytkownik

głosy
4

Nawiasem mówiąc, za pomocą PowerShell tutaj-string może uczynić swoją funkcję trochę łatwiej, a także czytać, ponieważ nie trzeba będzie podwoić wszystkie "-marks:

function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
  # Command to create an IIS application pool
  return @"
cscript adsutil.vbs CREATE "w3svc/AppPools/$AppPoolName" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserName" "$AppPoolUser"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserPass" "$AppPoolPass"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/AppPoolIdentityType" 3
"@
}
Odpowiedział 03/09/2008 o 00:11
źródło użytkownik

głosy
3

Prawo Pawła.
W PowerShell, parametry funkcyjne nie są zamknięte w nawiasach. (Parametry metody są nadal.)
Pierwszego połączenia po prostu przechodząc jedną wielką tablicę do funkcji, zamiast trzech oddzielnych parametrów chciałeś.

Odpowiedział 22/08/2008 o 18:22
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more