news 2026/9/30 6:30:15

PowerShell从入门到实战:打开方式、常用命令、乱码解决与自动化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PowerShell从入门到实战:打开方式、常用命令、乱码解决与自动化

经常看到有人在网上搜"powershell怎么打开""powershell菜鸟教程",老实说,Windows用了很多年还不知道PowerShell怎么打开的人,我身边就有。这很说明问题:PowerShell在Windows里的存在感比它应得的要低太多。它被默认塞在开始菜单的附件里,平时不声不响,但等你某天需要批量改文件名、查端口占用、写开机自启脚本、或者系统出了故障想快速定位原因时,它才是Windows真正的"总控台"。这篇不会把官方文档抄一遍,而是围绕我这些年实际用下来真正高频的Windows PowerShell命令和场景,给你一套能直接用起来的方案。不管你是刚接触命令行的新手,还是从CMD切换过来的老用户,按顺序看完应该都能有所收获。

1. 打开PowerShell的方式,远不止一种

"怎么打开PowerShell"听起来像个愚蠢的问题,但搜索量高得离谱。原因很简单:Windows每个版本的入口长得都不一样,导致大量用户根本没找到过它。

1.1 最常用的几种打开方式

  • 快捷键:按Win + X,弹出的菜单里选"Windows Terminal"或"Windows PowerShell"。Win11默认显示终端,Win10显示的是PowerShell。
  • 运行框:按Win + R,输入powershell回车。这是最快的方式,记不住别的这个一定要记住。
  • 资源管理器地址栏:在任意文件夹窗口的地址栏输入powershell回车,会直接在当前目录打开。这个技巧在你想"在某个特定项目文件夹里执行命令"时非常好用。
  • 右键菜单:在文件夹空白处Shift + 右键,选择"在此处打开PowerShell窗口"(Win11改成了"在终端中打开")。

1.2 什么时候必须用管理员身份运行

PowerShell分普通权限和管理员权限,很多人第一次执行命令报错"拒绝访问",多半就是权限不够。

需要管理员权限的典型操作:

  • 安装或卸载模块(Install-Module / Uninstall-Module)
  • 修改系统服务状态(Start-Service / Stop-Service)
  • 修改防火墙规则、组策略、系统环境变量
  • 查看安全日志(Get-WinEvent 里涉及 Security 日志时)

打开管理员PowerShell的方法:按Win键,输入powershell,右侧会出现"以管理员身份运行",点击即可。如果用的是Windows Terminal,在标签页上点下拉箭头也能选管理员标签页。普通权限日常排查足够,但是建议养成习惯:拿不准要不要管理员权限的时候,干脆直接开一个管理员窗口。

1.3 强烈建议:把终端换成Windows Terminal

这里插一个影响体验很大的建议。Windows自带的传统控制台窗口(conhost)不支持标签页,对UTF-8支持也有毛病,缩放字体还经常模糊。微软商店里免费下载的Windows Terminal才是现在Windows上的第一方终端,支持多标签页、自定义字体、自定义配色、快捷键复制粘贴。

装好之后,按Ctrl + Shift + P可以打开命令面板,在设置里可以把默认终端配置改成Windows Terminal,默认配置文件改成PowerShell 7(如果装了)。之后你再打开终端,就是带标签页的现代化界面了。后面要讲的乱码问题,换了终端之后也会消失一大半。

打开PowerShell后先确认一下版本信息,执行:

$PSVersionTable

输出中PSVersion一行会告诉你当前是5.1还是7.x,这决定了我们下一节的内容。

2. 版本与安装:错误代码 -2146869246 的真相

PowerShell的版本混乱问题几乎每个人都会遇到。Windows自带的永远是Windows PowerShell 5.1,而社区和新工具链都在向PowerShell 7迁移。最尴尬的是很多教程写了一半不说明版本,你照着敲可能成功,也可能直接一堆红色报错。

2.1 先分清楚5.1和7.x

项目Windows PowerShell 5.1PowerShell 7.x
运行环境.NET Framework.NET(跨平台)
安装方式系统自带,独立更新包手动安装,与5.1共存
系统集成度深度集成,作为系统组件独立运行,可移植
兼容性老脚本、老模块新工具链、跨平台脚本
curl别名指向Invoke-WebRequest已移除该别名

简单来说,5.1是系统组件,不建议也不能卸载;7.x是独立程序,适合做日常开发工作。两者可以共存,你在终端里可以同时看到"Windows PowerShell"和"PowerShell"两个入口,互不干扰。

判断自己用的是哪个版本,最直接的方式是看提示符。如果开头是PS C:\Users\xxx>而且是蓝色背景,大概率是5.1;如果是黑色背景且提示符里有pwsh字样,就是7.x。拿不准就执行$PSVersionTable.PSVersion。

2.2 升级到PowerShell 7的正确姿势

想体验最新PowerShell,最推荐用winget安装:

winget install --id Microsoft.PowerShell -e

如果winget不可用,去GitHub仓库的Releases页面下载最新的.msi安装包也可以。

装完有几件事要知道:

  • PowerShell 7不会替换5.1,两个入口会同时存在。
  • 它不会自动出现在右键菜单里,需要手动在Windows Terminal里新建标签页选择。
  • 配置文件路径不同于5.1,你在5.1里设置的别名、函数不会自动带过来。检查一下$PROFILE对应的路径,分别配置。
  • 有些老模块只支持5.1,如果脚本运行报错且涉及老模块,别急着卸载7.x,切回5.1跑就行。

2.3 报错 -2146869246:先把十进制转成十六进制

很多人下载PowerShell安装包时遇到过这个提示:安装程序无法安装 Windows PowerShell,错误代码为 -2146869246。网上搜这个错误代码基本搜不到有价值的东西。

这里分享一个通用的排错思路:遇到Windows Installer的错误码,先把十进制转成十六进制。-2146869246转出来是0x80096002。

0x80096002对应的含义,简单说就是"不受信任的根证书"。也就是说,Windows在验证MSI安装包的数字签名时,找不到可信任的根证书,于是中止安装。这不是PowerShell安装包本身坏了,而是系统证书环境出了问题。

遇到这个错误,按顺序排查:

  1. 先看系统时间是否正确,时间不对会导致证书有效期校验失败。右键任务栏时间 → 调整日期和时间 → 自动同步。
  2. 跑一遍Windows Update,安装所有重要更新,这些更新里往往包含了根证书更新。
  3. 如果你的系统是精简版或者优化版,很可能缺失了根证书文件。可以从微软下载中心获取"不受信任的根证书更新",或者尝试安装较新的根证书更新包。
  4. 实在不行,在安装包上右键 → 属性 → 数字签名 → 查看证书,手动把证书安装到"受信任的根证书颁发机构"。这个操作要谨慎,只对可信任的安装包这么做。

Win10/11上这个错误很少见,遇到的基本都是Win7/Win8等老系统。老系统不建议追新版PowerShell 7,装WMF 5.1(也就是PowerShell 5.1的独立更新包)更合适。

2.4 顺带解决PowerShell 5.1的下载问题

如果你在Windows 7上工作,想装PowerShell 5.1,操作方法是:先保证系统安装了SP1补丁,然后安装.NET Framework 4.5+(建议4.7.2),再从微软下载中心下载对应系统的WMF 5.1安装包。Win10/11自带5.1完全不需要额外下载,网上那些标题带"5.1下载"的页面很多是SEO包装过的,注意辨别官方来源。

3. 乱码、编码和执行策略:新手摔跤的三个经典坑

比起命令记不住,更多人在PowerShell里遇到的问题其实是"环境不对"——中文乱码、脚本不让跑、运行到一半输出全成了问号。这部分浪费的时间远比记命令多。

3.1 中文乱码的根源和解法

PowerShell里看到中文乱码,90%是编码问题。Windows传统控制台默认用系统ANSI代码页(中文系统是GBK,也就是代码页936)去渲染输出,而很多现代程序输出的是UTF-8,两边对不上,就会变成鍦哄湴或者锟斤拷这类"经典乱码"。

最常见的场景是在PowerShell里跑一个Python脚本或Node脚本,脚本里用UTF-8打印中文,控制台却按GBK解码,全变乱码。

解法按优先级排序:

  1. 用Windows Terminal替代传统控制台。这是最省事的方案,Windows Terminal天然支持UTF-8。
  2. 临时切代码页:执行chcp 65001把控制台代码页切换到UTF-8。注意关掉终端重开就失效了。
  3. 检查字体。如果字体是"点阵字体"或者太老的字体,对Unicode支持不好,也会显示成方块或乱码。Windows Terminal里用默认的Cascadia Mono,或者装一个Nerd Font比如CaskaydiaCove Nerd Font,显示效果会好很多。

有人可能在热搜里看到"deepseek配置windows powershell乱码",其他命令行工具在PowerShell里乱码的原理也完全一样:终端编码、字体、工具自身输出编码,就这三处。终端换成Windows Terminal,大部分问题直接消失。

3.2 保存脚本时的编码陷阱

如果你在VSCode里写了一个PowerShell脚本,里面包含中文注释或中文字符串,保存时编码选错了,在Windows PowerShell 5.1里打开就会乱码,甚至报语法错误。

原因:5.1默认用ANSI代码页读取无BOM的UTF-8脚本,而ANSI在中文环境里是GBK,读UTF-8的中文字节流必然产生乱码。

解决方式:

  • VSCode里保存.ps1文件时,右下角编码选择"UTF-8 with BOM"。
  • 或者如果你主要用PowerShell 7.x,它默认按UTF-8读取,就没这个问题。

注意一点:很多跨平台团队要求所有文件统一为"UTF-8 无BOM",因为Linux/macOS里BOM可能会引发意外。你的脚本如果要在Linux的PowerShell里跑,就别加BOM。最好的习惯是:脚本里尽量用英文注释,即使配了BOM,跨平台也省心。

3.3 执行策略:为什么脚本双击不了、运行报错

Windows PowerShell默认执行策略是Restricted,意思是允许你敲命令,但不允许执行.ps1脚本文件。你写了一个脚本,双击它,可能会弹出记事本而不是运行;在终端里运行,直接报"禁止运行脚本"。

先看当前策略:

Get-ExecutionPolicy

改成当前用户允许运行本地脚本:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

RemoteSigned的含义是:本地创建的脚本可以运行,从网上下载的脚本(带Zone.Identifier标记)必须有可信签名。

你可能见过一些工具让你在终端执行这样的命令:

powershell -ep bypass -c "irm ..."

-ep bypass就是这次调用临时不检查执行策略。很多软件的一键安装脚本都用这种方式。明白这个逻辑之后,看到类似命令至少能猜到它在做什么——先下载一个远程脚本,再执行它。这里提醒一句:不明来源的远程脚本别乱跑,irm加iex确实能把工具链一键装好,同样也能把不该装的东西全装进来。

如果你在改执行策略时报错"被组策略覆盖",那说明电脑被域环境或组策略锁定了,个人用户基本接触不到这种情况。

4. 常用命令,按真实工作场景分组整理

这节是核心。我不会按字母顺序罗列命令,而是按日常排查和开发最常遇到的场景分组。先理解一个关键思维:PowerShell和CMD最大不同是,PowerShell操作的是"对象",不是"字符串"。

举个例子:Get-Process返回的不是一行行文字,而是一堆进程对象,你可以对这些对象做排序、过滤、统计,然后格式化输出。这种"管道传递对象"的模式,让批量操作能用一条命令完成。

初次接触时,你会在命令里看到$_这个符号,它表示"当前管道对象"。看到{ $_.Name -eq "chrome" }这样的写法,意思就是"当前对象的Name属性等于chrome"。

拿不准某个命令返回什么对象时,接Get-Member看一下:

Get-Process | Get-Member

这会列出所有属性和方法,是排查命令时最高频的技巧。

4.1 文件与目录操作:最常用,也最容易翻车

  • 列出目录内容:Get-ChildItem(别名ls或dir)
  • 切换目录:Set-Location(别名cd)
  • 递归查看所有文件:Get-ChildItem -Recurse -Filter *.log
  • 复制:Copy-Item -Recurse -Force
  • 移动:Move-Item
  • 重命名:Rename-Item

批量改名的实际例子,把当前目录所有.txt改成.md:

Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '\.txt$', '.md' }

这条命令的含义:取出所有txt文件,通过管道传给Rename-Item,每个文件的Name通过正则替换后缀。在CMD里你要写for循环,在PowerShell里一行搞定。

看日志文件的末尾内容,用:

Get-Content app.log -Tail 50

-Tail 50表示最后50行,相当于Linux的tail -50。

写入内容用Set-Content,追加内容用Add-Content。这两个命令日常脚本里非常常用。

删除目录要特别小心:

Remove-Item -Recurse -Force C:\SomeFolder

这条命令不经过回收站,直接物理删除。我见过有人在错误的路径上多打了一个参数,结果把整个项目删了。建议执行删除前先加上-WhatIf参数预览结果:

Remove-Item -Recurse -Force C:\SomeFolder -WhatIf

它会列出"将要删除哪些项目"而不会真正删除,确认无误再去掉-WhatIf。

4.2 进程、服务和端口:排查问题的主力

开发中最常见的需求是"端口被占用了,到底是谁占了"。每次遇到8080端口起不来,最直接的操作:

Get-NetTCPConnection -LocalPort 8080 | Select-Object State, LocalAddress, LocalPort, OwningProcess

拿到OwningProcess那列显示的PID后,再查这个PID对应的进程:

Get-Process -Id 12345

如果你只想快速结束占用端口的进程,一条命令:

Stop-Process -Id 12345 -Force

服务管理同样在PowerShell里集中操作:

  • 查看服务状态:Get-Service
  • 重启服务:Restart-Service -Name spooler
  • 筛选运行中的服务:
Get-Service | Where-Object { $_.Status -eq 'Running' }

再说一个网上搜索量很高的问题:"telnet命令怎么用"。很多人用telnet来测试远程端口通不通,但Windows默认不装telnet客户端,于是卡住了。别去折腾telnet了,PowerShell原生就有更清晰的替代:

Test-NetConnection 192.168.1.100 -Port 3389

这个命令会返回TcpTestSucceeded结果,还会顺带显示Ping状态和路由信息。远程端口通不通,一条命令看结果,比telnet好用太多。同理,老掉牙的ping可以用Test-Connection来替代,返回的也是对象化结果。

4.3 系统信息、日志和事件:排查安全问题的入口

整机信息收集,一条命令导出到文件:

Get-ComputerInfo | Out-File info.txt

系统日志排查,比如看过去24小时系统里的错误事件:

Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddDays(-1)}

Level=2对应Error级别。

关于"windows安全日志"的搜索热度一直很高。查最近20条登录失败记录(事件ID 4625):

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20

注意:查看Security日志需要管理员权限。查登录成功对应4624,查账号锁定对应4740。这些命令初看有点吓人,但确实是排查可疑登录最直接的手段。

查系统开机时间:

(Get-CimInstance Win32_OperatingSystem).LastBootUpTime

CMD里的systeminfo也能看,但PowerShell这种方法返回对象,可以做进一步筛选和格式化。

4.4 网络请求与HTTP接口调试

很多场景需要在PowerShell里下载文件或调用HTTP接口。下载文件:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile file.zip

调用REST接口并查看返回结果:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-RestMethod -Uri "https://api.github.com/repos/PowerShell/PowerShell/releases/latest" | Select-Object tag_name

第一行SecurityProtocol是为了强制TLS 1.2,Windows PowerShell 5.1里默认可能走的是旧TLS协议,导致HTTPS请求失败。这条经验在5.1环境里调试API时非常关键。

这里有个大坑:在Windows PowerShell 5.1里,curl是Invoke-WebRequest的别名,不是真正的curl。你在5.1里执行curl -X POST ...,它不会按curl语法解析,而是按Invoke-WebRequest的参数解析,然后各种报错。到了PowerShell 7才移除这个别名。所以看到网上的curl教程时,在PowerShell里要么写curl.exe显式调用系统自带的curl(Win10 1803以后自带),要么直接换成Invoke-RestMethod。

DNS查询也别再用nslookup的交互模式了:

Resolve-DnsName www.example.com

一条命令直接输出A记录、CNAME等信息。

4.5 一个综合示例:把前面组合起来用

找内存占用最高的前5个进程:

Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, WS, CPU

查到某个端口被占用后直接结束该进程:

$p = Get-NetTCPConnection -LocalPort 8080 | Select-Object -First 1 -ExpandProperty OwningProcess Stop-Process -Id $p

上面这两个操作,在GUI里可能需要打开任务管理器加资源监视器,来回切换窗口找半天,在PowerShell里两条命令搞定。这就是它与传统图形化操作差距最明显的场景。

4.6 新旧命令对照表

场景老办法(CMD)PowerShell推荐
查端口通不通telnet IP 端口Test-NetConnection IP -Port 端口
查DNSnslookup(交互)Resolve-DnsName 域名
下载文件curl -OInvoke-WebRequest -OutFile
pingpingTest-Connection
看日志末尾type/无Get-Content -Tail 50
查进程tasklistGet-Process
结束进程taskkill /F /PIDStop-Process -Id

5. 让PowerShell在后台干活:开机自启与定时任务

命令行工具用在交互式排查只是基本功,真正体现价值的是让脚本在后台自动运行。开机自启的搜索热度常年很高,但很多教程只讲了启动文件夹一种方案,实际使用中往往会遇到"窗口一闪而过""权限不够""为什么没生效"这些问题。

5.1 三种开机自启方式怎么选

方式位置优点缺点
启动文件夹shell:startup最简单直观需用户登录,可能闪窗
注册表Run键HKCU\Software\Microsoft\Windows\CurrentVersion\Run简单,适合安装器需用户登录,验证略麻烦
任务计划程序Register-ScheduledTask / 任务计划GUI支持开机触发、最高权限、静默运行配置稍复杂

我的建议:

  • 只是想登录后跑个脚本,不在乎窗口闪现:启动文件夹放快捷方式最省事。
  • 想静默运行,尤其需要管理员权限:用任务计划程序,这是最正规的方案。
  • 注册表Run键和启动文件夹很接近,我一般只在写自动化安装脚本时才顺手用它。

5.2 用任务计划程序实现"开机自动清理临时文件"

写一个清理脚本D:\Scripts\cleanup.ps1,删除临时目录下超过3天的文件:

$cutoff = (Get-Date).AddDays(-3) Get-ChildItem $env:TEMP -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

然后在PowerShell里注册开机计划任务:

$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "D:\Scripts\cleanup.ps1"' $trigger = New-ScheduledTaskTrigger -AtStartup $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd Register-ScheduledTask -TaskName "TempCleanupOnBoot" -Action $action -Trigger $trigger -Settings $settings -User "SYSTEM" -RunLevel Highest -Description "开机自动清理临时文件"

参数含义:

  • -WindowStyle Hidden:不弹黑色窗口。
  • -ExecutionPolicy Bypass:绕过执行策略限制。
  • -AtStartup:开机时触发,不是登录时。
  • -User "SYSTEM":以系统账户运行,这样开机不需要任何用户登录也会执行。
  • -RunLevel Highest:以最高权限运行。

一个非常常见的坑是:注册任务时不给-User,默认情况下任务只会在你自己登录后运行,而且权限受限。很多人写完脚本发现在计划任务里点"运行"成功,但重新开机后脚本没生效,就是没分清"用户登录后运行"和"开机未登录就运行"的区别。用上面这个写法,任务以SYSTEM账户运行,设置的是系统TEMP目录(C:\Windows\Temp),不是你的用户TEMP目录。如果你希望清理的是C:\Users\你的用户名\AppData\Local\Temp,要么把脚本里的$env:TEMP改成明确的用户路径,要么把-User改成你的用户名并勾选"不管用户是否登录都要运行"。

5.3 启动文件夹方案的快捷方式做法

启动文件夹方案其实更适合"登录后"快速启动小工具。操作方式:

  • Win + R输入shell:startup打开启动文件夹。
  • 右键 → 新建快捷方式 → 目标填:
powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "D:\Scripts\startup.ps1"
  • 给快捷方式改个名字,下次登录系统后就会静默执行。

这个方案有个硬伤:如果脚本需要管理员权限,这种启动方式不行。除非给快捷方式勾上"以管理员身份运行",但那样每次开机都会弹一次UAC确认框,反而更麻烦。所以需要管理员权限的脚本,一律建议走任务计划程序,不要折腾启动文件夹。

5.4 怎么确认自启任务真的执行过

脚本都配好了,重启了,任务到底跑没跑?第一步不是改代码,而是查任务状态:

Get-ScheduledTaskInfo -TaskName "TempCleanupOnBoot"

在输出里看LastRunTime(上次运行时间)和LastTaskResult(上次运行结果)。LastTaskResult为0表示成功,非0就按对应的错误码排查。这一步能省下大量猜测时间。

6. 把PowerShell当成统一的操作入口:联动常用工具

从热搜词里能感觉到,越来越多的人正在Windows上安装和使用原本面向Linux/macOS开发者的工具:git、docker、redis、elasticsearch等。这些工具在Windows上的安装方式五花八门,但它们的日常操作入口有一个共同点:命令行。而PowerShell正是Windows上唯一成熟、统一、可脚本化的命令行环境。

6.1 常见工具的PowerShell操作姿势

这些工具的套路很一致:先安装,再用命令行控制。PowerShell在这里不是替代它们,而是给它们一个统一的操作环境。

  • Git:在PowerShell里直接git status、git log。配合posh-git模块,命令行里能直接显示当前分支和变更状态,比来回切GUI高效非常多。
  • Docker:装好Docker Desktop后,在PowerShell里执行docker ps、docker-compose up -d。Docker Desktop本身有GUI,但进入正常工作流之后,大家基本都在终端里操作。
  • Redis:Windows版Redis安装后一般注册为Windows服务,用Get-Service Redis检查状态,Restart-Service Redis重启服务。
  • Elasticsearch:官方Windows版是zip包,解压后在PowerShell切到对应目录,执行.\bin\elasticsearch.bat就能启动,日志直接打印在终端里,Ctrl+C停止。用前面提到的Expand-Archive命令解压非常方便:
Expand-Archive .\elasticsearch-8.12.0-windows-x86_64.zip -DestinationPath C:\Tools\
  • Vim:Windows下安装Vim后,在PowerShell里就能直接vim编辑文件。配合Nerd Font,终端里的Vim体验已经不输原生终端。

这些工具的共同点在于:它们都在命令行里工作,而PowerShell给了它们一个稳定的"总控台"。在同一个终端窗口里,先git pull,再docker-compose up,再检查一下本地端口,再调一个REST接口验证——这种工作流比来回切换GUI工具高效太多。

6.2 用包管理器装命令行工具,别再去官网翻安装包

很多开源工具在Windows上的安装包藏得深,搜索时容易下载到捆绑软件。正确的做法是用包管理器:

  • winget:Win10/11自带(或通过应用商店更新),装常用软件很方便。
  • choco:老牌包管理器,需要管理员权限,适合装系统级软件。
  • scoop:绿色安装,装开发工具非常顺手,默认装到用户目录,不需要管理员权限。

实际用法示例:

winget search git winget install --id Git.Git -e winget upgrade --all

对elasticsearch这类不在包管理器里的工具,下载后用PowerShell解压并加入PATH:

$target = 'C:\Tools\elasticsearch-8.12.0\bin' $userPath = [Environment]::GetEnvironmentVariable('Path', 'User') if ($userPath -notlike "*$target*") { [Environment]::SetEnvironmentVariable('Path', "$userPath;$target", 'User') }

修改完PATH后需要重开终端才能生效。这里用了GetEnvironmentVariable而不是直接操作$env:Path,是因为避免把系统级变量展开后"固化"进用户变量里,那样以后机器级PATH变动会影响读到的值。

6.3 服务类工具的启停管理经验

装了服务类工具(Redis、MySQL、Docker等)后,很多会注册成Windows服务。统一操作:

Get-Service | Where-Object { $_.DisplayName -like "*redis*" } Start-Service Redis Restart-Service Redis Stop-Service Redis

如果工具没有注册成Windows服务(比如Elasticsearch官方zip包),我的建议是:本地开发调试时直接用PowerShell窗口跑最直观,方便看日志;生产环境或长期后台运行再注册成服务,或者交给任务计划程序托管。不要为了"看起来像正式环境"一上来就注册服务,那样排查日志反而多绕一层。

写到最后再分享一点个人体会。PowerShell的学习曲线其实不在命令语法本身,而在于你愿不愿意把那些"双击就能完成"的操作换成一条命令。第一次用管道批量处理文件时可能会觉得绕,但一旦跨过这个门槛,大概率是回不去CMD了。很多人觉得PowerShell难,卡住的原因往往不是命令记不住,而是环境没配好——终端不对、编码不对、执行策略不对。所以前面花了大篇幅讲"怎么打开""怎么装对版本""怎么处理乱码",因为这些问题不解决,后面学多少命令都会在各种奇怪的地方被绊倒。如果你只打算做一件事,我建议把Windows Terminal设为默认终端,再花半小时把高频命令过一遍。等下次需要批量处理文件、排查端口、写自启脚本的时候,你第一反应应该不再是"去网上找个工具软件",而是打开PowerShell直接开干。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 6:29:44

Wi-Fi核心知识精要:从频段到帧结构全解析

wifi -- 相关名词理论理论最小集先掌握这些:频段、信道、RSSI/SNR、调制、带宽。802.11 帧三大类:管理帧、控制帧、数据帧。常见管理帧:Beacon、Probe Request/Response、Authentication、Association、Deauthentication。控制帧:…

作者头像 李华
网站建设 2026/9/30 6:29:37

EfficientNetV2工程落地全解析:精度、速度与功耗的平衡术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 6:29:29

UCB1算法:多臂老虎机探索-利用、遗憾界与Python实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 6:29:27

STM32CubeIDE 安装、汉化、主题调优与故障排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 6:29:26

2026广州工业现场EtherCAT总线驱动器选型实测指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 6:29:02

WebSphere Application Server部署决策链:下载安装与运行时契约解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华