我正在向我的团队分发一个PowerShell脚本。该脚本从Vsphere客户端获取一个IP地址,建立一个mstsc连接,并将其记录在共享文件中。
他们一使用脚本就知道了机器的IP地址。在此之后,他们总是倾向于直接使用mstsc,而不是运行PowerShell脚本。 (因为他们正在使用mstsc,我不知道他们是否经常使用VM。)
他们主要告诉我,运行PowerShell并不简单。
我对他们的懒惰感到厌恶。
是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
我正在向我的团队分发一个PowerShell脚本。该脚本从Vsphere客户端获取一个IP地址,建立一个mstsc连接,并将其记录在共享文件中。
他们一使用脚本就知道了机器的IP地址。在此之后,他们总是倾向于直接使用mstsc,而不是运行PowerShell脚本。 (因为他们正在使用mstsc,我不知道他们是否经常使用VM。)
他们主要告诉我,运行PowerShell并不简单。
我对他们的懒惰感到厌恶。
是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
当前回答
您可以将ps1文件的默认文件关联设置为powershell.exe,这将允许您通过双击它来执行powershell脚本。
在Windows 10中,
右键单击ps1文件 单击“打开” 点击选择另一个应用程序 在弹出窗口中,选择“更多应用程序” 滚动到底部,选择“在这台PC上寻找另一个应用程序”。 浏览并选择C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe。 列表项
这将改变文件关联,ps1文件将通过双击它们来执行。通过将notepad.exe设置为默认应用程序,您可以将其更改为默认行为。
源
其他回答
我在Windows 10和powershell 5.1上使用了这个方法:
右键单击.ps1文件 打开…… 选择另一个应用程序 将powershell.exe的位置复制到地址栏(默认情况下不会显示windows文件夹),即C:\Windows\System32\WindowsPowerShell\v1.0 选择powershell.exe 选择“总是使用此应用程序打开。ps1文件” 单击OK
这是我默认以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"""''}"')
创建一个快捷方式,像这样的“目标”:
powershell.exe -command "& 'C:\A path with spaces\MyScript.ps1' -MyArguments blah"
在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
我使用了这个(只需要运行一次);还要确保你有执行的权利:
从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会执行它。