首页 > 解决方案 > 如何在计算机启动时运行 powershell 脚本

问题描述

我正在尝试Daily.ps1在启动时运行 PowerShell 脚本,但是,由于管理员设置(我无法以管理员身份运行,这不是一个选项),我无法通过任务计划程序运行它。例如,这是 的内容Daily.ps1

if (1 -eq 1) {
    "Hello there!"
}  
  1. 所以我试图让一个批处理脚本Daily.cmd在启动时运行(通过启动文件夹),它运行,但我无法让它运行Daily.ps1,并且我收到一条消息,说正在运行脚本被禁用。(两个文件在同一个目录下)

    powershell C:\Users\Simon\Desktop\Daily.ps1
    

    文件 C:\Users\Simon\Desktop\Daily.ps1 无法加载,因为在此系统上禁用了运行脚本

  2. 然后我尝试使用我学到的技巧中的这行代码来直接绕过正在运行的脚本:

    powershell cat Daily.ps1 | powershell invoke-expression
    

    这有效,但仅适用于一个衬垫。所以我添加了 的-raw标志 cat,它在 powershell 中有效,但在 CMD 中无效。出于某种原因,Daily.ps1的文本仍然存储为字符串数组。(为格式化道歉)

    命令管道位置 1 处的 cmdlet Invoke-Expression

    为以下参数提供值:

    命令:if (1 -eq 1) {

    • 调用表达式:在 line:1 char:14
    • 如果 (1 -eq 1) {
    • 语句块或类型定义中缺少结束“}”。
    • 在行:1 字符:1
    • 调用表达式~~~~~~~~~~~~~~~~~
  3. 所以我尝试将其添加到Daily.cmd

    powershell
    cat -raw Daily.ps1 | powershell-invoke-expression
    

    但是,一旦我进入 PowerShell,脚本的其余部分就根本不会执行。

我不知道要Daily.ps1运行批处理命令。有没有我错过的方法,或者我尝试的方法之一有问题(没有管理员权限)?

编辑:为了澄清,ExecutionPolicy设置为Restricted,并且无法更改。此外,我可以通过右键单击文件并使用 PS 运行来很好地运行 PowerShell 脚本。

标签: powershellbatch-file

解决方案


创建计划任务以在计算机启动时运行。放入powershell.exe“程序/脚本”-File "C:\path\to\your.ps1"字段和“参数”字段(您可能希望避免将脚本放在用户配置文件中)。将任务设置为无论用户是否登录都运行。


推荐阅读