使用Invoke-Command调用脚本时,在PowerShell中获取脚本目录
我有一组PowerShell脚本,其中包含位于同一文件夹中的“常用”脚本,如下所示:
# some-script.ps1
$scriptDir = Split-Path -Parent $myinvocation.mycommand.path
. "$scriptDirscript-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 个回复
裸雷胜檀哭
使用-filepath参数使用invoke-command时,将从本地计算机上的文件中读取脚本,转换为脚本块,然后传递给远程计算机。远程计算机无法知道是否从文件中读取了该脚本块。 要让远程计算机知道原始文件路径是什么,您必须告诉它。我认为最简单的方法是编写一个函数来进行调用,并让它将文件名作为参数传递给调用的脚本。
坊岔埠绵