游客发表

powershell怎么运行脚本

发帖时间:2026-10-17 04:38:58

PowerShell脚本默认双击是运行打不开的,会直接弹记事本。脚本我第一次跑脚本时也愣了半天,运行后来才搞明白,脚本运行脚本这事的运行核心就一句话:你得告诉系统“我允许执行”。

先讲最直接的脚本办法——在PowerShell窗口里敲路径。打开PowerShell(Win键搜“powershell”就行),运行输入脚本的脚本完整路径,比如C:\scripts\test.ps1,运行回车。脚本但你会撞上一堵墙,运行系统报错说“禁止运行脚本”。脚本这是运行微软的默认安全策略,叫ExecutionPolicy,脚本默认是运行Restricted,啥脚本都不让跑。

绕开这堵墙有俩路子。第一种,临时改策略。在PowerShell里执行Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process,这行命令只对当前窗口生效,关掉就恢复原样。适合你偶尔跑一次脚本,不污染系统设置。第二种,永久改,把-Scope改成CurrentUser,执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser——这个策略允许本地脚本运行,但下载的脚本需要数字签名,平衡了安全和便利。

改完策略,再敲路径就能跑了。但有个坑:如果你脚本路径带空格,必须加引号,比如& "C:\My Scripts\test.ps1"。不加引号,PowerShell会把路径拆成两段,直接报错“找不到项”。

嫌敲路径麻烦?有更省事的方法。在资源管理器里,先按住Shift键,然后右键点击脚本文件,菜单里会冒出“使用PowerShell运行”这个选项。点它,脚本会执行,但窗口一闪而过,你看不到输出结果。要是脚本里有Read-Host或Pause这类等待输入的命令,窗口会停住,否则根本来不及看报错。

还有一种日常开发经常用的方式——直接在PowerShell里按F5。这要求你先用记事本或VS Code打开脚本文件,但别直接关,而是把文件拖进PowerShell窗口。拖进去后,PowerShell自动把路径变成带引号的命令,你补上回车键就行。这招适合你反复改脚本、反复测试的场景,比每次切窗口敲路径快得多。

最后提醒个容易卡住新手的地方:有时候你明明改了ExecutionPolicy,但脚本还是跑不了,报错说“未授权”。八成是你把策略改到了Machine级别,但当前PowerShell窗口是以管理员身份打开的,而脚本放在用户目录下——权限范围对不上。解决办法很简单,把-Scope明确改成CurrentUser,或者干脆右键“以管理员身份运行”PowerShell再执行一次。

脚本跑起来只是第一步,真正恼人的是脚本文件编码问题。如果你用记事本写脚本,保存时选了UTF-8带BOM,PowerShell 5.1能正常读;但如果你保存成无BOM的UTF-8,中文注释全变乱码,甚至直接报语法错误。解决方案是换用VS Code,存盘时右下角编码选“UTF-8 with BOM”,或者干脆用系统自带的Windows PowerShell ISE(集成脚本环境),它默认保存格式就是兼容的。

跑通了脚本,你可能会发现一个反直觉的现象:脚本里写的Write-Host "hello",在控制台能看到输出,但如果你把输出重定向到文件.\test.ps1 > out.txt,文件里啥也没有。因为Write-Host走的是信息流,不是标准输出流。想捕获输出,用Write-Output。这算PowerShell脚本新手最容易踩的第二个坑,我当年排查了半小时才明白。

最后送你个实用建议:别把脚本放在桌面或下载文件夹里跑。Windows对这些目录有特殊保护,有时会触发Mark of the Web(网络标记),导致脚本被阻止。放到C:\Scripts这种干净目录,能省掉不少莫名其妙的权限问题。

    热门排行

    友情链接