Получить каталог сценария в PowerShell, когда сценарий вызывается с помощью Invoke-Command

У меня есть набор сценариев PowerShell, которые включают" общий "сценарий, расположенный в той же папке, например:

# some-script.ps1
$scriptDir = Split-Path -Parent $myinvocation.mycommand.path
. "$scriptDir\script-utils.ps1"

Это нормально, если сценарий вызывается напрямую, например

.\some-script.ps1

Однако, если сценарий вызывается с помощью Invoke-Command, это не работает:

Invoke-Command -ComputerName server01 -FilePath "X:\some-script.ps1"

В этом случае, на самом деле, $ myinvocation.mycommand содержит содержимое сценария, а $ myinvocation .mycommand.path имеет значение null.
Как я могу определить каталог сценария таким образом, чтобы он работал также при вызове сценария с помощью Invoke-Command?

ПРИМЕЧАНИЕ
В конце концов, это решение, которое я фактически использовал:

Invoke-Command -ComputerName server01 `
  {param($scriptArg); & X:\some-script.ps1 $scriptArg } `
  -ArgumentList $something

Это также позволяет передавать параметры к сценарию.

5
задан Paolo Tedesco 9 March 2011 в 08:11
поделиться