gpt4 book ai didi

powershell - $MyInvocation.MyCommand.Path 在 PowerGUI 脚本编辑器中为 $null

转载 作者:行者123 更新时间:2023-12-04 15:52:55 28 4
gpt4 key购买 nike

尝试在 powerGUI 脚本编辑器 (2.0.0.1082) 中调试我的 powershell 脚本时,$MyInvocation.MyCommand.Path 为 $null。
它在通过 powershell 运行脚本时起作用。
在 Powershell_ise.exe(在我们的一台服务器上)运行它也可以正常工作。

有没有其他人遇到过同样的问题或知道出了什么问题?

这是我的 PowerShell 版本:

名称值
---- -----
CLR 版本 2.0.50727.4927
构建版本 6.1.7600.16385
PS版本 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
序列化版本 1.1.0.1
PSRemotingProtocolVersion 2.1

服务器版本:

名称值
---- -----
CLR 版本 2.0.50727.3082
构建版本 6.0.6002.18111
PS版本 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
序列化版本 1.1.0.1
PSRemotingProtocolVersion 2.1

最佳答案

$MyInvocation.MyCommand对象根据其执行的上下文而变化。在这种情况下,$MyInvocation.MyCommand.Path如果从 $script: 调用,只会返回一些东西范围,因为这是确定执行代码的目录的唯一有效范围。

因此,这里的解决方案要么是使用 $script:MyInvocation.MyCommand.Path$MyInvocation.ScriptName .

编辑

在 PowerShell ISE 中运行它会按预期工作,因为如果在 PowerShell 控制台中运行它,您会得到相同的结果:

function Main
{
Write-Host ("MyCommand.Path from function: " + $MyInvocation.MyCommand.Path)
Write-Host ("ScriptName from function: " + $MyInvocation.ScriptName)
}

Main

Write-Host ("MyCommand.Path from script scope: " + $MyInvocation.MyCommand.Path)
Write-Host ("ScriptName from script scope: " + $MyInvocation.ScriptName)

输出是:
MyCommand.Path from function: 
ScriptName from function: C:\temp\Test.ps1
MyCommand.Path from script scope: C:\temp\Test.ps1
ScriptName from script scope:

我没有使用过 PowerGUI,但如果你没有得到相同的输出,那么它可能是一个错误。

关于powershell - $MyInvocation.MyCommand.Path 在 PowerGUI 脚本编辑器中为 $null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989069/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com