powershell - $MyInvocation.MyCommand.Name 将 ps1 转换为 exe 后返回空值
问题描述
powershell 脚本在将其转换为 .exe 文件并执行后会导致输出不正确:
$MyScriptName = $MyInvocation.MyCommand.Name
以上是我的 powershell 代码片段,它工作正常并将脚本名称保存在$MyScriptName
变量中。
一旦我们将 .ps1 脚本转换为 .exe 文件并执行它,该变量$MyScriptName
就有一个空值。
解决方案
将脚本转换为可执行文件后,与脚本相关的变量变得不可用。您可以在 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]) }
推荐阅读
- sql - PARSE_DATE : 解析函数 BigQuery/Standard SQL 的结果无效
- azure - How to access Microsoft Office 365 Planner programmatically
- javascript - Post 'older' and 'newer' navigation links are not showing in my blogger blog
- class - Vue v-bind:循环外的类
- javascript - Firefox 在使用带有“u”标志的 Perl 令牌时抛出“正则表达式中的无效身份转义”
- java - 从 Firestore 读取嵌套对象时出现“RuntimeException:无法反序列化对象”
- powershell - 如果行包含来自变量 A OR B 的值,则从文件中排除
- html - 自定义复选框,无 Javascript,不更改 HTML,仅 CSS
- php - 获取 Icecat API 以获取产品信息
- jenkins - Jenkins 和 gradle - 使用最新版本的 CI 依赖项构建项目,用于生产的特定版本