Obtenga el directorio de script en PowerShell cuando el script se invoca con Invoke-Command
Tengo un conjunto de scripts de PowerShell que incluyen un script "común", ubicado en la misma carpeta, como este:
# some-script.ps1
$scriptDir = Split-Path -Parent $myinvocation.mycommand.path
. "$scriptDir\script-utils.ps1"
Esto está bien si el script se llama directamente, por ejemplo,
.\some-script.ps1
Sin embargo, si se llama al script con Invoke-Command, esto no funciona:
Invoke-Command -ComputerName server01 -FilePath "X:\some-script.ps1"
En este caso, de hecho,$myinvocation.mycommand
contiene el contenido de la secuencia de comandos y$myinvocation.mycommand.path
es nulo
¿Cómo puedo determinar el directorio del script de una manera que funcione también cuando el script se invoca con Invoke-Command?
NOT
Al final, esta es la solución que realmente utilicé:
Invoke-Command -ComputerName server01 `
{param($scriptArg); & X:\some-script.ps1 $scriptArg } `
-ArgumentList $something
Esto también permite pasar parámetros al script.