我正在向我的团队分发一个PowerShell脚本。该脚本从Vsphere客户端获取一个IP地址,建立一个mstsc连接,并将其记录在共享文件中。
他们一使用脚本就知道了机器的IP地址。在此之后,他们总是倾向于直接使用mstsc,而不是运行PowerShell脚本。 (因为他们正在使用mstsc,我不知道他们是否经常使用VM。)
他们主要告诉我,运行PowerShell并不简单。
我对他们的懒惰感到厌恶。
是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
我正在向我的团队分发一个PowerShell脚本。该脚本从Vsphere客户端获取一个IP地址,建立一个mstsc连接,并将其记录在共享文件中。
他们一使用脚本就知道了机器的IP地址。在此之后,他们总是倾向于直接使用mstsc,而不是运行PowerShell脚本。 (因为他们正在使用mstsc,我不知道他们是否经常使用VM。)
他们主要告诉我,运行PowerShell并不简单。
我对他们的懒惰感到厌恶。
是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
当前回答
与UNIX shar (shell存档)具有相同精神的解决方案。
你可以把你的powershell脚本放在一个扩展名为.cmd的文件中(而不是.ps1),并把它放在开头:
@echo off
Rem Make powershell read this file, skip a number of lines, and execute it.
Rem This works around .ps1 bad file association as non executables.
PowerShell -Command "Get-Content '%~dpnx0' | Select-Object -Skip 5 | Out-String | Invoke-Expression"
goto :eof
# Start of PowerShell script here
其他回答
创建一个快捷方式,像这样的“目标”:
powershell.exe -command "& 'C:\A path with spaces\MyScript.ps1' -MyArguments blah"
我在Windows 10和powershell 5.1上使用了这个方法:
右键单击.ps1文件 打开…… 选择另一个应用程序 将powershell.exe的位置复制到地址栏(默认情况下不会显示windows文件夹),即C:\Windows\System32\WindowsPowerShell\v1.0 选择powershell.exe 选择“总是使用此应用程序打开。ps1文件” 单击OK
从http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily:
为HKEY_CLASSES_ROOT\Microsoft.PowerShellScript设置默认值。1\Shell到0
你可能不想这样做,但一个简单的方法就是创建一个.BAT文件,然后把你的命令放进去:
powershell ./generate-strings-table-en.ps1
powershell ./generate-conjoined-tables-it.ps1
然后双击BAT文件。
我使用了这个(只需要运行一次);还要确保你有执行的权利:
从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会执行它。