Obter diretório de script no PowerShell quando o script é chamado com Invoke-Command
Eu tenho um conjunto de scripts do PowerShell que incluem um script "comum", localizado na mesma pasta, assim:
# some-script.ps1
$scriptDir = Split-Path -Parent $myinvocation.mycommand.path
. "$scriptDir\script-utils.ps1"
Isso é bom se o script for chamado diretamente, por exemplo
.\some-script.ps1
No entanto, se o script for chamado com Invoke-Command, isso não funcionará:
Invoke-Command -ComputerName server01 -FilePath "X:\some-script.ps1"
Nesse caso, de fato,$myinvocation.mycommand
contém o conteúdo do script e$myinvocation.mycommand.path
é nulo.
Como posso determinar o diretório do script de uma maneira que funcione também quando o script é chamado com Invoke-Command?
NOTA
No final, esta é a solução que realmente usei:
Invoke-Command -ComputerName server01 `
{param($scriptArg); & X:\some-script.ps1 $scriptArg } `
-ArgumentList $something
Isso também permite passar parâmetros para o script.