我正在向我的团队分发一个PowerShell脚本。该脚本从Vsphere客户端获取一个IP地址,建立一个mstsc连接,并将其记录在共享文件中。

他们一使用脚本就知道了机器的IP地址。在此之后,他们总是倾向于直接使用mstsc,而不是运行PowerShell脚本。 (因为他们正在使用mstsc,我不知道他们是否经常使用VM。)

他们主要告诉我,运行PowerShell并不简单。

我对他们的懒惰感到厌恶。

是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?


当前回答

导航REGEDIT到 HKEY_LOCAL_MACHINE \ SOFTWARE \ \ Microsoft.PowerShellScript.1 \壳类 在右侧窗格中双击“(默认)” 删除现有的“Open”值(启动Notepad),输入“0”(为零,直接启动Powershell)。

如果希望再次使用“记事本”作为默认值,则恢复该值。

其他回答

这是基于KoZm0kNoT的答案。我修改了它,让它能跨驱动器工作。

@echo off
pushd "%~d0"
pushd "%~dp0"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
popd

如果用户的cwd在不同的驱动器上,这两个pushd/popd是必要的。如果没有外部设置,带有脚本的驱动器上的cwd将会丢失。

如果你熟悉高级Windows管理,那么你可以使用这个ADM包(说明包括在那个页面上),并允许通过这个模板和本地GPO双击后运行PowerShell脚本。在此之后,您可以简单地将与.ps1文件类型相关联的默认程序更改为PowerShell .exe(使用搜索,它是相当隐藏的),并且您已经准备好双击运行PowerShell脚本。

否则,我建议坚持使用其他建议,因为使用这些管理工具可能会搞乱整个系统。

我认为默认设置太严格了。如果有人设法在你的计算机上放置一些恶意代码,那么他/她也能够绕过这个限制(将其包装成.cmd文件或.exe,或带有快捷方式的技巧),而它最终所实现的只是阻止你以简单的方式运行你所编写的脚本。

我尝试了这个问题的最重要的答案,但遇到了错误消息。然后我在这里找到了答案:

PowerShell表示“在此系统上禁止执行脚本”。

对我来说效果很好的是使用这个解决方案:

powershell -ExecutionPolicy Bypass -File script.ps1

您可以将其粘贴到.bat文件中并双击它。

从http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily:

为HKEY_CLASSES_ROOT\Microsoft.PowerShellScript设置默认值。1\Shell到0

我的解决方案是2022年 安装“PowerShell-7.2.2-win-x64.msi” 右键单击文件。Ps1,用“pwsh”更改为exec

Powershell注册表黑客和策略绕过从未对我起作用。