ISE中的MyInvocation.MyCommand.Path与常规PS

时间:2019-01-04 00:37:57

标签: powershell powershell-v4.0

我有一个旧脚本,在某些情况下会使用一些额外的参数来调用自身。如果通过常规的Powershell窗口运行,这将起作用

$spath = $script:MyInvocation.MyCommand.Path
$FilePathWithQuotes = '"{0}"' -f $spath 
powershell -file $FilePathWithQuotes -NestedCall @ExtraArgs

但是如果通过ISE运行,则会出现此错误。

  

powershell:Add-Type:无法将参数“ Path”绑定到目标。   异常设置“路径”:“在D:\ Deploy \ File中找不到路径   Deploy.ps1:39 char:5   + powershell-文件$ FilePathWithQuotes -NestedCall @ExtraArgs   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~       + CategoryInfo:未指定:(添加类型:Cann ...找不到路径:String)[],RemoteException       + FullyQualifiedErrorId:NativeCommandError

我添加了第二行以确保空格不是问题,但在ISE中仍然失败。  有什么想法吗?我在PS 5.1上

1 个答案:

答案 0 :(得分:0)

是的,检查$PSISE,并在可能的情况下使用它。

$spath = If($PSISE){$psISE.CurrentFile.FullPath}else{$script:MyInvocation.MyCommand.Path}
$FilePathWithQuotes = '"{0}"' -f $spath 
powershell -file $FilePathWithQuotes -NestedCall @ExtraArgs