Saltar al contenido

Un script de Powershell llamando a otro con parámetros

Solución:

EDITAR: la fuente de puntos del script como se muestra en mi respuesta original cargará el script y las variables, objetos, funciones, etc.en la sesión actual; esto podría tener consecuencias no deseadas en ciertas circunstancias.

La alternativa es utilizar el & operador de llamada que ejecuta el script en su propio ámbito:

& "C:AzureFileShareMEDsysPowershell ScriptsB.ps1" -ServerName medsys-dev

El problema es que tiene un espacio en la ruta del archivo, por lo que debe envolver toda la ruta entre comillas simples para que se reconozca correctamente. (Consulte about_Quoting_Rules para obtener más información sobre comillas simples o dobles). Termina siendo un comando desordenado al final:

Invoke-Expression "&'C:AzureFileShareMEDsysPowershell ScriptsB.ps1' -ServerName medsys-dev"

dot-sourcing es mucho más agradable ya que simplemente envuelve la ruta del script entre comillas dobles y deja los parámetros como están:

."C:AzureFileShareMEDsysPowershell ScriptsB.ps1" -ServerName medsys-dev

No necesitas Invoke-Expression o dot-sourcing. Simplemente ejecute el script:

& "C:AzureFileShareMEDsysPowershell ScriptsB.ps1" -param1 arg1...

Si la ruta de la secuencia de comandos y / o el nombre de archivo contienen espacios, encierre la secuencia de comandos entre comillas y utilice la & (llamar) al operador para ejecutar el script. Si la ruta de la secuencia de comandos y / o el nombre de archivo no contienen comillas, puede ejecutarlo sin las comillas o el & operador:

C:AzureFileShareMEDsysPowershellScriptsB.ps1 -param1 arg1...

La razón por la que no recomiendo el código fuente del script es porque las variables, funciones, etc. del script aparecerán en la sesión actual. Probablemente esta no sea la intención si solo desea ejecutar el script y no contaminar el espacio de nombres de la sesión actual con cosas del script.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *