Pregunta

Estoy intentando hacer una concatenación/formato de cadenas, pero estoy poniendo todos los parámetros en el primer marcador de posición.

Código

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

Producción

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
¿Fue útil?

Solución

Pierde los paréntesis y las comas.

Llamando a su función como:

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

da:

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

Otros consejos

Por cierto, usando un PowerShell aquí-cadena También podría hacer que su función sea un poco más fácil de leer, ya que no necesitará duplicar todos los "-marcas:

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
"@
}

Pablo tiene razón.
En PowerShell, los parámetros de función no están entre paréntesis.(Los parámetros del método todavía lo son).
Su llamada inicial fue simplemente pasar una gran matriz a la función, en lugar de los tres parámetros separados que deseaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top