PowerShell 脚本执行与命令行执行的区别

PowerShell 脚本执行与命令行执行的区别

一、在 Windows 中使用 PowerShell,常见有两种形式

  1. 在命令行里直接敲 PowerShell 命令
  2. 编写 .ps1 脚本文件并执行

两者用途不同,不能混为一谈。


二、直接在命令行执行 PowerShell 命令

指的是在 PowerShell 窗口 中直接输入命令:

Get-Process
Get-ChildItem

特点:

  • 立即执行,适合临时操作、调试
  • 不受脚本文件限制
  • 不涉及 ExecutionPolicy
  • 关闭窗口后命令即失效

适用场景:

  • 日常运维
  • 命令测试
  • 交互式操作

三、PowerShell 脚本执行(.ps1

将多条命令写入 .ps1 文件,例如:

Get-Process
Get-Date

通过 PowerShell 解释器执行:

powershell -File script.ps1

特点:

  • 可重复执行,适合自动化
  • 可被任务计划、快捷方式调用
  • 受 ExecutionPolicy 约束
  • 适合复杂逻辑与长期使用

四、为什么脚本不能直接运行?

默认情况下,Windows 会限制 .ps1 脚本运行:

  • 防止误执行恶意脚本
  • 这是 ExecutionPolicy 的作用

常见报错:

running scripts is disabled on this system

五、推荐的脚本执行方式

powershell -ExecutionPolicy Bypass -File "E:\code\autoqiandao\edge-auto-sign.ps1"

说明:

  • Bypass:忽略执行策略,仅当前进程生效
  • 不修改系统配置
  • 最适合自动化和分发脚本

六、脚本执行的常见注意事项

1. 路径

  • 含空格必须加引号
  • 优先使用绝对路径

2. 权限

  • 普通脚本无需管理员
  • 涉及系统操作需管理员运行

3. 编码

  • 推荐 UTF-8(无 BOM)

4. 当前目录

  • 脚本运行时的工作目录不一定是脚本所在目录
  • 必要时使用:
$PSScriptRoot

七、简要对比总结

项目 命令行执行 脚本执行
交互性
是否可复用
是否受 ExecutionPolicy 影响
自动化 不适合 非常适合

八、一句话记忆

命令行是“临时操作”,脚本是“自动化方案”。