我试图在启动时运行PowerShell脚本Daily.ps1
,但是由于管理员设置(我无法以admin身份运行,这不是一个选项),因此无法通过Task Scheduler运行它。例如,这是Daily.ps1
的内容:
if (1 -eq 1) {
"Hello there!"
}
因此,我尝试在启动时(通过启动文件夹)运行批处理脚本Daily.cmd
,该脚本可以运行,但是我无法让其运行Daily.ps1
,我收到一条消息,指出正在运行的脚本已禁用。 (两个文件都在同一目录中)
powershell C:\Users\Simon\Desktop\Daily.ps1
文件C:\ Users \ Simon \ Desktop \ Daily.ps1无法加载,因为此系统上的运行脚本已禁用
然后,我从一个学会了直接绕过运行脚本的技巧中尝试使用以下代码:
powershell cat Daily.ps1 | powershell invoke-expression
这有效,但仅适用于一个衬板。所以我添加了-raw
标志
cat
,在Powershell中可用,但在CMD中不可用。由于某些原因,Daily.ps1
的文本仍存储为字符串数组。 (道歉)
cmdlet Invoke-Expression在命令管道位置1
提供以下参数的值:
命令:if(1 -eq 1){
- invoke-expression:行:1字符:14
- 如果(1-eq 1){
- 在语句块或类型定义中缺少结束符'}'。
- 在第1行:char:1
- 调用表达式~~~~~~~~~~~~~~~~
所以我尝试将其添加到Daily.cmd
:
powershell
cat -raw Daily.ps1 | powershell-invoke-expression
但是,一旦我进入PowerShell,脚本的其余部分将根本无法执行。
我不知道让Daily.ps1
通过批处理命令运行。是我错过了一种方法,还是我尝试过的一种方法(没有管理员权限)?
编辑:为明确起见,ExecutionPolicy
设置为Restricted
,并且不能更改。此外,我可以通过右键单击文件并使用PS来运行PowerShell脚本。
答案 0 :(得分:0)
创建计划任务以在计算机启动时运行。将git checkout develop
git checkout -b master develop
放在“程序/脚本”字段中,并将git checkout --orphan master
git reset --hard
放在“参数”字段中(您可能希望避免将脚本放在用户个人资料中)。设置任务以无论用户是否登录都运行。
答案 1 :(得分:-1)
我找到了答案!
尝试了许多不同的方法后,我遇到了以下代码行,如果ExecutionProperty
设置为restricted
,则可以运行PS脚本:
start powershell "cat -raw C:\Users\Simon\Desktop\Daily.ps1 | invoke-expression"
这将运行powershell,并使用将cat -raw [file.ps1]
的结果传递到invoke-expression
的技巧。如果将ExecutionProperty
设置为restricted
,这是有用的解决方法。
然后,您可以将该行保存到.cmd
或.bat
文件中,并使用Task Scheduler(可定制性更高)或将其放在启动文件夹中。
P.S。对于一直说“ ExecutionProperty
”而不是“ restricted
”的所有人。我清楚地多次声明我不能执行此操作(非管理员),系统管理员也不会执行该操作,也永远不会发生(必须保持restricted
):)