позвольте мне прояснить, что я не говорю о запуске сценария с пути UNC, как если бы он выполнял удаленное взаимодействие, но все же использую команду invoke или start-job для запуска блока сценариев на удаленном компьютере. Просто так получается, что этот скрипт-блок для удобства запускает скрипт из UNC-пути.

я есть набор сценариев 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 нулевой.
Как я могу определить каталог скрипта таким образом, чтобы он также работал, когда скрипт вызывается с помощью Invoke-Command?

НОТА
В конце концов, это решение, которое я на самом деле использовал:

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос