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

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

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

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

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


当前回答

我使用了这个(只需要运行一次);还要确保你有执行的权利:

从PowerShell提升权限:

Set-ExecutionPolicy=RemoteSigned

然后从一个bat文件:

-----------------------------------------

 ftype Microsoft.PowerShellScript.1="C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -noexit ^&'%%1'

 assoc .ps1=Microsoft.PowerShellScript.1

-----------------------------------------
auto exit: remove -noexit 

瞧;双击*。Ps1会执行它。

其他回答

在Windows 10中,你可能还想删除Windows资源管理器对文件扩展名关联的覆盖:

HKEY_CURRENT_USER软件\ Microsoft \ Windows \ CurrentVersion探索者FileExts \ \ UserChoice。ps1

除了HKEY_CLASSES_ROOT\Microsoft.PowerShellScript之外。1\Shell\open\命令的变化在其他答案中提到。

参见https://stackoverflow.com/a/2697804/1360907

您可以将ps1文件的默认文件关联设置为powershell.exe,这将允许您通过双击它来执行powershell脚本。

在Windows 10中,

右键单击ps1文件 单击“打开” 点击选择另一个应用程序 在弹出窗口中,选择“更多应用程序” 滚动到底部,选择“在这台PC上寻找另一个应用程序”。 浏览并选择C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe。 列表项

这将改变文件关联,ps1文件将通过双击它们来执行。通过将notepad.exe设置为默认应用程序,您可以将其更改为默认行为。

在我的子文件夹中放一个简单的.cmd文件和同名的.ps1文件,例如,一个名为“foobar”的脚本会有“foobar. exe”。Ps1”和“foobar.cmd”。所以要运行.ps1,我所要做的就是从资源管理器中单击.cmd文件或从命令提示符中运行.cmd。我使用相同的基本名称,因为.cmd文件将自动使用自己的名称查找.ps1。

::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
    @echo off
    for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
    pushd "%SCRIPT_PATH%"

    powershell.exe -sta -c "& {.\%~n0.ps1 %*}"

    popd
    set SCRIPT_PATH=
    pause

pushd/popd允许您从命令提示符启动.cmd文件,而不必更改到脚本所在的特定目录。它将改变到脚本目录,然后当完成返回到原来的目录。

如果您希望命令窗口在脚本结束时消失,也可以取消暂停。

如果我的.ps1脚本有参数,我会使用. net Forms使用GUI提示来提示它们,但也要使脚本足够灵活,以便在我想要传递参数时接受参数。这样我就可以从资源管理器中双击它,而不必知道参数的详细信息,因为它会用列表框或其他形式询问我需要什么。

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

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

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

powershell -ExecutionPolicy Bypass -File script.ps1

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

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

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