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

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

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

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

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


当前回答

这是我默认以admin身份运行的脚本:

Powershell.exe -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList '-File """%1"""'}"

你需要将它作为默认值粘贴到regedit中:

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command

或者这里有一个脚本,将为您做:

$hive = [Microsoft.Win32.RegistryKey]::OpenBaseKey('ClassesRoot', 'Default')
$key = $hive.CreateSubKey('Microsoft.PowerShellScript.1\Shell\Open\Command')
$key.SetValue($null, 'Powershell.exe -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList ''-File """%1"""''}"')

其他回答

我在Windows 10和powershell 5.1上使用了这个方法:

右键单击.ps1文件 打开…… 选择另一个应用程序 将powershell.exe的位置复制到地址栏(默认情况下不会显示windows文件夹),即C:\Windows\System32\WindowsPowerShell\v1.0 选择powershell.exe 选择“总是使用此应用程序打开。ps1文件” 单击OK

或者如果你想让所有PS1文件都像VBS文件那样工作,你可以像这样编辑注册表:

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command

编辑默认值,如下所示…

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -noLogo -ExecutionPolicy unrestricted -file "%1"

然后你可以像你想的那样双击所有的。ps1文件。以我的拙见,是能够跳出框框的。

我将称之为“Powershell去阉割黑客”。LOL享受吧!

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

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

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

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

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

powershell -ExecutionPolicy Bypass -File script.ps1

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

创建一个快捷方式,像这样的“目标”:

powershell.exe -command "& 'C:\A path with spaces\MyScript.ps1' -MyArguments blah"