Hvordan kan jeg passere flere strengparametere til en Powershell script?

stemmer
31

Jeg prøver å gjøre noen streng sammensetning / formatering, men det er å sette alle parametere i den første plassholder.

Kode

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

Produksjon

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
Publisert på 22/08/2008 klokken 16:03
kilden bruker
På andre språk...                            


3 svar

stemmer
41

Mister parentes og komma.

Ringe din funksjon som:

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

gir:

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
Svarte 22/08/2008 kl. 16:15
kilden bruker

stemmer
3

Paul har rett.
I Power, blir funksjonsparametre ikke er innelukket i parentes. (Metode parametre fremdeles er.)
Din første samtalen var bare passerer en stor array til funksjonen, i stedet for de tre separate parametere du ønsket.

Svarte 22/08/2008 kl. 17:22
kilden bruker

stemmer
4

Forresten, ved hjelp av en Powershell her-strengen kan gjøre din funksjon litt lettere å lese også, siden du ikke trenger å doble opp alle "-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
"@
}
Svarte 02/09/2008 kl. 23:11
kilden bruker

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