首页 > 解决方案 > $MyInvocation.MyCommand.Name 将 ps1 转换为 exe 后返回空值

问题描述

powershell 脚本在将其转换为 .exe 文件并执行后会导致输出不正确:

$MyScriptName = $MyInvocation.MyCommand.Name

以上是我的 powershell 代码片段,它工作正常并将脚本名称保存在$MyScriptName变量中。

一旦我们将 .ps1 脚本转换为 .exe 文件并执行它,该变量$MyScriptName就有一个空值。

标签: powershell

解决方案


将脚本转换为可执行文件后,与脚本相关的变量变得不可用。您可以在 Markus Scholtes 在 Github 上的 PS2EXE-GUI 版本 (Win-PS2EXE) 发布页面上找到有关它的信息:PS2EXE-GUI

这是您需要添加到脚本中的代码。

if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
{ $ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition }
else
{ $ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) }

推荐阅读