gpt4 book ai didi

powershell - 将任何文件作为 powershell 脚本执行

转载 作者:行者123 更新时间:2023-12-03 14:30:19 25 4
gpt4 key购买 nike

我遇到了一个挑战,但未能按照我希望的方式解决。

我有一个包含 powershell 脚本的文件,但该文件没有分配给 powershell 的扩展名。问题是:如何在具有错误文件扩展名(或无)的脚本文件中执行 powershell?
Invoke-Expression似乎不起作用,因为它总是执行分配给文件类型的默认操作。如果我给那个 cmdlet 一个 *.txt文件编辑器弹出打开。

我知道我可以通过重命名脚本文件或首先正确命名来解决这个问题。这就是我最终要做的。

我仍然想知道是否可以在不修改、重命名或处理文件的情况下将文件作为具有错误文件扩展名的脚本执行。如果它不起作用......为什么会这样?

最佳答案

Powershell 的设计使得执行或点源文件需要 .ps1扩展名,Powershell.exe 将拒绝运行任何没有该扩展名的文件。

从非 ps1 文件调用 Powershell 代码的一种方法是使用 STDIN 启动 Powershell.exe,并将您的脚本通过管道传递给它。这需要一个新的 shell,因此不太适合从现有脚本环境中启动脚本。

Powershell.exe - < thescript.txt

另一种方法是创建一个临时 .ps1文件并执行它。这具有使用当前脚本环境的优点,但需要一个临时文件。
Copy-Item -Path '.\thescript.txt' -Dest '.\temp.ps1'
. .\temp.ps1
del .\temp.ps1

在我看来,文件扩展名限制很愚蠢,但这就是它的设计方式。杜撰,这是出于安全原因,但我找不到任何引文来支持它。

关于powershell - 将任何文件作为 powershell 脚本执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30613629/

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