我有一组 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
这也允许将参数传递给脚本。