登录
首页 >  Golang >  Go问答

Powershell 脚本独立运行,但作为可执行文件运行时出现“方法调用失败”错误

来源:stackoverflow

时间:2024-04-19 13:27:33 501浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Powershell 脚本独立运行,但作为可执行文件运行时出现“方法调用失败”错误》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

以下是我的 powershell 脚本片段,用于获取所有已安装的应用程序:

$tPatchObject = @() #initialize array

#invoking the native powershell(32 bit/64 bit)
$tPatchObject =  &"$env:systemroot\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -Command {Get-Childitem "HKLM://SOFTWARE//Microsoft//Windows//CurrentVersion//Uninstall//*" | Get-ItemProperty | Sort-Object DisplayName -Unique;};

#appending applications from a different path to same array
$tPatchObject += &"$env:systemroot\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -Command {Get-Childitem "HKLM://SOFTWARE//Wow6432Node//Microsoft//Windows//CurrentVersion//Uninstall//*" | Get-ItemProperty | Sort-Object DisplayName -Unique}

在 windows server 2008 r2 系统上进行测试时,如果直接从 powershell 执行,它会给出正确的输出。但是,当作为 golang 中编译的可执行文件的一部分执行相同的脚本时,会出现错误

方法调用失败,因为 [system.management.automation.psobject] 不包含名为“op_addition”的方法。

仅在 windows server 2008 系统上遇到此问题。我的假设是由于调用 &"powershell.exe"


解决方案


试试这个,LookPath

cmd := `Get-Childitem "HKLM://SOFTWARE//Microsoft//...`

ps, _ := exec.LookPath("powershell.exe")
args := append([]string{"-NoProfile", "-NonInteractive", cmd})

out, _ := exec.Command(ps, args...).Output()

今天关于《Powershell 脚本独立运行,但作为可执行文件运行时出现“方法调用失败”错误》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>