为什么双击 ps1 文件没反应

2021-08-27 09:06:33 +08:00
 ghmum

系统:10

写了一个非常简单的代码,保存后双击文件并任何反应,就像没有运行一样,

但是用 visual studio code 打开文件,运行就能达到效果

代码只有一行

2223 次点击
所在节点    问与答
16 条回复
ghmum
2021-08-27 09:09:11 +08:00
代码不让放,放代码就 1000 天
脚本的作用是结束所有的 记事本 进程
passerbytiny
2021-08-27 09:21:31 +08:00
win10 默认情况下禁止执行 PS 脚本,需要手动配置权限。怎么配置忘了,你搜索一下很容易找到
kiracyan
2021-08-27 09:42:35 +08:00
powershell 脚本右键运行吧 双击默认是打开 或者写个 bat 去调用
ghmum
2021-08-27 09:48:55 +08:00
因为这个脚本是写来放开机启动的,但是发现开机后脚本并没有运行
ghmum
2021-08-27 09:49:55 +08:00
@kiracyan 设置了脚本的打开方式为 powershell,也不能双击吗?
ExplorerLog
2021-08-27 09:53:25 +08:00
Powershe ll 脚本的 4 种执行权限

Restricted: 默认的设置, 不允许任何 script 运行
AllSigned: 只能运行经过数字证书签名的 script
RemoteSigned: 运行本地的 script 不需要数字签名,但是运行从网络上下载的 script 就必须要有数字签名
Unrestricted: 允许所有的 script 运行
kiracyan
2021-08-27 09:54:31 +08:00
@ghmum 那应该可以 你再 pwsh 里面执行有效吗?
dinghmcn
2021-08-27 10:05:06 +08:00
记得安装 scoop 的时候要开放权限的
Tumblr
2021-08-27 10:21:33 +08:00
我猜你的计划任务里直接执行 ps1 文件了吧? ps1 脚本的计划任务这样写:
程序 /脚本:powershell.exe
参数: -ExecutionPolicy ByPass -File "_path_to_script.ps1"
ghmum
2021-08-27 11:25:21 +08:00
@ExplorerLog 当下的权限设置是 RemoteSigned,应该没什么限制吧
ghmum
2021-08-27 11:26:01 +08:00
@Tumblr 我是把脚本放到了开机启动的那个文件夹里面,然后开机启动没反应,双击之后也没有反应
ghmum
2021-08-27 11:26:47 +08:00
@passerbytiny 我搜索了一下,好像是没有搜到:-(
Tumblr
2021-08-27 11:33:31 +08:00
@ghmum #11 这是正常的,ps1 既不是程序也不是可执行脚本。如果要开机启动就用计划任务吧,或者写个 bat 文件来调用你的 ps1 。
canbingzt
2021-08-27 13:53:13 +08:00
ysc3839
2021-08-27 18:01:42 +08:00
@Tumblr 正常情况应该是用记事本打开这个文件,我这边的 shell open command 是这样的。没有任何反应的话可能是被改过了。

如果你想实现不修改设置,直接打开就能执行的话,可以用下面这种写法
```
<# :
@powershell.exe -NoProfile -Command "Invoke-Expression (${%~f0} | Out-String)"
@exit /b
#>

Write-Host 'PowerShell!!!'
```
保存为 .cmd 或 .bat 后缀的文件即可。
印象中是在 StackOverflow 上看到的,但是刚刚没找到。

这里利用了 cmd 重定向符可以出现在任意位置的特性,`<# :` 会被当成标签解析,不会出现语法错误。
https://devblogs.microsoft.com/oldnewthing/20060518-07/?p=31153
以及 cmd 在遇到 exit 或者 goto :EOF 时不会继续解析后面的代码,所以在里面写别的脚本也不会出现语法错误。
然后 <##> 又是 PowerShell 的注释,所以 PowerShell 执行时也不会出现语法错误。
powershell.exe 的参数不能直接传文件名,因为 PowerShell 会检查文件名后缀是不是 .ps1 ,所以需要把文件内容读出来执行。
exip
2021-08-27 20:32:34 +08:00
通过 vbs 调用 ps1,不用修改 ps 的执行权限。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/798260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX