我有以下代码作为较长脚本的开头:
$ScriptPath = Split-Path $MyInvocation.MyCommand.Path
& $ScriptPath\build_functions.ps1
& $ScriptPath\build_builddefs.ps1
这个想法是获取正在运行的脚本的路径并使用该路径调用一些支持脚本。但是,当我单独测试它以确保它可以工作时(通过突出显示该块并仅运行该代码),我收到以下错误:
Split-Path: Cannot bind argument to parameter 'Path' because it is null.
有趣的是,当我运行整个脚本时,它似乎分别运行这些文件。关于 ISE 如何处理运行选择而不是完整脚本,我是否遗漏了什么?运行选择时它不会建立文件系统上下文吗?
最佳答案
$MyInvocation
是 automatic variable居住在 脚本运行时间 , 那么如果你执行 $MyInvocation.MyCommand.Path
在 powershell console
或 ISE
没有人口;
这就是为什么在您的测试中 $ScriptPath
没有值(value) ( $null
)
关于powershell - $MyInvocation.MyCommand.Path 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742354/