Windows 终端命令详解:PowerShell 初学者指南_windows powershell
一、引言
什么是 Windows 终端?
Windows 终端是一个命令行工具,允许用户通过文本命令与系统交互,执行文件管理、系统配置和网络诊断等操作。PowerShell 是 Windows 终端的现代版本,相比传统的命令提示符(CMD),它功能更强大,支持脚本编写和复杂任务处理。本文将以 PowerShell 为主,带你从零开始学习。
如何打开 PowerShell?
有以下几种方法可以打开 PowerShell:
- 按 Win + R 键,输入 powershell,然后按回车。
- 在任务栏搜索框输入 “PowerShell”,点击打开。
- 按 Win + X 键,然后选择终端管理员
打开 PowerShell 后,你会看到类似以下的提示符:
PS C:\\Users\\userC>
这表示你当前在 C 盘的 Users\\userC 目录下。本文假设系统有 C 盘(用户 userC)、D 盘(用户 userD)、E 盘(用户 userE)、F 盘(用户 userF),我们将通过示例展示命令的运行效果。
二、基础导航命令
这些命令帮助你在文件夹之间移动和查看内容。
-
cd(切换目录)功能:更改你当前所在的文件夹位置(PowerShell 中实际命令是
Set-Location,cd是它的常用别名)。新手提示:这可能是你用得最多的命令之一!
示例:
cd D:\\Users\\userD(切换当前工作目录到 D 盘的Users\\userD文件夹)cd ..(返回上一级文件夹)cd \\(切换到当前盘符的根目录, 比如C:\\或D:\\)cd F:\\Users\\userF(切换当前工作目录到 F 盘的Users\\userF文件夹)cd ~(切换到你的用户主目录, 通常是C:\\Users\\你的用户名)
# 从 C 盘切换到 D 盘的 userD 目录C:\\Users\\userC> cd D:\\Users\\userDD:\\Users\\userD> -
dir或ls(列出目录内容)功能:显示当前文件夹里的文件和子文件夹(PowerShell 中实际命令是
Get-ChildItem,dir和ls是它的常用别名)。新手提示:
ls是 Linux/Mac 用户熟悉的命令,PowerShell 也支持它!示例:
dir(列出当前目录下的文件和文件夹)ls(效果同dir)dir -Name(仅列出当前目录下文件和文件夹的名称,看起来更简洁)dir -Force(列出当前目录下的所有文件和文件夹, 包括隐藏的项目)dir E:\\Users\\userE(列出 E 盘Users\\userE目录下的文件和文件夹)
# 列出 F 盘 userF 目录内容F:\\Users\\userF> dir 目录: F:\\Users\\userFMode LastWriteTime Length Name---- ------------- ------ ----d----- 2023/10/27 09:00 dir1d----- 2023/10/27 09:01 dir2-a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt# 仅显示文件名F:\\Users\\userF> dir -Namedir1dir2file1.txtfile2.txt# 包括隐藏文件F:\\Users\\userF> dir -Force 目录: F:\\Users\\userFMode LastWriteTime Length Name---- ------------- ------ ----d----- 2023/10/27 09:00 dir1d----- 2023/10/27 09:01 dir2-a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt-a-h-- 2023/10/27 09:10 50 hidden.txt# 列出 E 盘 userE 目录内容F:\\Users\\userF> dir E:\\Users\\userE 目录: E:\\Users\\userEMode LastWriteTime Length Name---- ------------- ------ -----a---- 2023/10/27 10:15 512000 photo.jpg-a---- 2023/10/27 10:16 15360000 video.mp4-a---- 2023/10/27 10:17 800 notes.txt -
pwd(显示当前路径)功能:告诉你现在位于哪个文件夹(PowerShell 中实际命令是
Get-Location,pwd是它的别名)。新手提示:当你切换了太多次目录,不确定自己在哪时,用这个命令!
示例:
pwd
D:\\Users\\userD> pwdPath----D:\\Users\\userD
三、文件与文件夹管理命令
这些命令用于管理文件和文件夹。
-
mkdir或md(创建文件夹)功能:创建一个新的文件夹(PowerShell 中实际命令是
New-Item -ItemType Directory)。示例:
mkdir C:\\Users\\userC\\test(在C:\\Users\\userC创建test文件夹)。md D:\\Users\\userD\\dir1\\dir2(在D:\\Users\\userD下同时创建dir1和dir1\\dir2两个嵌套文件夹,如果dir1不存在的话)。
# 在 C 盘 userC 目录下创建 test 文件夹C:\\Users\\userC> mkdir C:\\Users\\userC\\test 目录: C:\\Users\\userCMode LastWriteTime Length Name---- ------------- ------ ----d----- 2023/10/27 11:00 test# 在 D 盘 userD 目录下创建多级目录 dir1\\dir2C:\\Users\\userC> mkdir D:\\Users\\userD\\dir1\\dir2 目录: D:\\Users\\userD\\dir1Mode LastWriteTime Length Name---- ------------- ------ ----d----- 2023/10/27 11:01 dir2 -
copy或cp(复制文件/文件夹)功能:复制文件或文件夹(PowerShell 中实际命令是
Copy-Item)。新手提示:复制文件夹时,如果想把里面的所有东西都复制过去,需要加
-Recurse参数。示例:
copy E:\\Users\\userE\\test.txt F:\\Users\\userF(将E:\\Users\\userE\\test.txt复制到F:\\Users\\userF目录下)cp C:\\Users\\userC\\myProject D:\\backup\\ -Recurse(递归复制C:\\Users\\userC\\myProject文件夹及其所有内容到D:\\backup\\目录下)
# 复制 E:\\Users\\userE\\test.txt 到 F:\\Users\\userFC:\\Users\\userC> copy E:\\Users\\userE\\test.txt F:\\Users\\userF\\# 递归复制 C 盘 userC 目录下的 myProject 文件夹到 D:\\backupC:\\Users\\userC> cp C:\\Users\\userC\\myProject D:\\backup\\ -Recurse -
move或mv(移动或重命名文件/文件夹)功能:移动文件或文件夹到另一个地方,或者在原地给它改个名字(PowerShell 中实际命令是
Move-Item)。示例:
move C:\\Users\\userC\\test.txt D:\\Users\\userD(将C:\\Users\\userC\\test.txt文件移动到D:\\Users\\userD目录下)mv E:\\Users\\userE\\folder1 F:\\Users\\userF(将E:\\Users\\userE\\folder1文件夹移动到F:\\Users\\userF目录下)move D:\\Users\\userD\\old_name.log new_name.log(在D:\\Users\\userD目录下将old_name.log重命名为new_name.log)
# 移动 C:\\Users\\userC\\test.txt 到 D:\\Users\\userDC:\\Users\\userC> move C:\\Users\\userC\\test.txt D:\\Users\\userD\\# 重命名 D:\\Users\\userD\\old.txt 为 new.txtD:\\Users\\userD> ren .\\old.txt new.txt -
del或rm或rmdir或rd或erase(删除文件/文件夹)功能:删除文件或文件夹(PowerShell 中实际命令是
Remove-Item)。!!! 非常重要:删除操作通常不可逆,默认不经过回收站!请务必小心使用 !!!
新手提示:删除非空文件夹通常需要加-Recurse参数。-Force可以强制删除(比如删除只读或隐藏文件)。示例:
del E:\\Users\\userE\\test.txt(删除E:\\Users\\userE目录下的test.txt文件)。rmdir C:\\Users\\userC\\test(删除C:\\Users\\userC目录下的空文件夹test)。rm D:\\Users\\userD\\dir1 -Recurse(删除D:\\Users\\userD\\dir1文件夹及其所有内容 - 危险操作!)。del F:\\Users\\userF\\*.tmp -Force(强制删除F:\\Users\\userF目录下所有.tmp文件)。
# 删除 E:\\Users\\userE\\test.txt 文件C:\\Users\\userC> del E:\\Users\\userE\\test.txt# 递归删除 D:\\Users\\userD\\dir1 文件夹 (危险!)C:\\Users\\userC> rmdir D:\\Users\\userD\\dir1 -Recurse -Force -
ren或rename(重命名)功能:重命名文件或文件夹(PowerShell 中实际命令是
Rename-Item)。示例:
ren D:\\Users\\userD\\old.txt new.txt(将D:\\Users\\userD目录下的old.txt重命名为new.txt)。rename C:\\Users\\userC\\MyFolder MyProject(将C:\\Users\\userC目录下的MyFolder文件夹重命名为MyProject)。- 进阶示例:
Get-ChildItem E:\\Users\\userE\\*.jpeg | ren -NewName {$_.Name -replace \'\\.jpeg\',\'.jpg\'}(将E:\\Users\\userE目录下所有.jpeg文件后缀改为.jpg)。
# 将 D:\\Users\\userD\\old.txt 重命名为 new.txtD:\\Users\\userD> ren .\\old.txt new.txt# 将 C:\\Users\\userC\\MyFolder 重命名为 MyProjectC:\\Users\\userC> rename .\\MyFolder MyProject -
type或cat或gc(查看文件内容)功能:在屏幕上显示文本文件的内容(PowerShell 中实际命令是
Get-Content)。新手提示:
cat是 Linux/Mac 用户熟悉的命令。gc是Get-Content的缩写。示例:
type D:\\Users\\userD\\hi.txt(显示D:\\Users\\userD\\hi.txt文件的内容)cat C:\\Users\\userC\\config.log(同上)gc E:\\Users\\userE\\long_log.txt -Head 20(只看E:\\Users\\userE\\long_log.txt文件的前 20 行)gc F:\\Users\\userF\\error_report.txt -Tail 10(只看F:\\Users\\userF\\error_report.txt文件的最后 10 行)
# 查看 D:\\Users\\userD\\hi.txt 的内容C:\\Users\\userC> type D:\\Users\\userD\\hi.txtThis is the content of hi.txt.Hello PowerShell!# 查看 E:\\Users\\userE\\long_log.txt 的最后 5 行C:\\Users\\userC> gc E:\\Users\\userE\\long_log.txt -Tail 5Line 96Line 97Line 98Line 99Line 100 -
>和>>(输出重定向)功能:这是 shell 的特性,不是 PowerShell 命令,但非常常用。
>把命令的输出写入文件(覆盖原有内容),>>把输出追加到文件末尾。新手提示:这是创建简单文本文件或保存命令结果的快捷方式。
示例:
\"第一行笔记\" > C:\\Users\\userC\\mynote.txt(创建mynote.txt并写入这句话,如果文件已存在则覆盖)dir D:\\Users\\userD > D:\\Users\\userD\\filelist.txt(把dir D:\\Users\\userD命令的结果保存到filelist.txt)\"这是追加的一行\" >> C:\\Users\\userC\\mynote.txt(在mynote.txt文件末尾添加这句话)Get-Process >> F:\\Users\\userF\\process_history.log(把当前进程列表追加到process_history.log文件)
# 创建新文件或覆盖旧文件写入内容C:\\Users\\userC> \"Hello from PowerShell!\" > .\\greeting.txtC:\\Users\\userC> type .\\greeting.txtHello from PowerShell!# 向文件追加内容C:\\Users\\userC> Get-Date | Out-String >> .\\greeting.txt # 使用 Out-String 确保日期格式正确追加C:\\Users\\userC> type .\\greeting.txtHello from PowerShell!2023年10月27日 15:30:00
四、系统信息与管理命令
这些命令用于查看和管理系统。
-
ps或gps(查看进程)功能:列出当前正在运行的程序(进程)(PowerShell 中实际命令是
Get-Process)。tasklist是传统 CMD 命令,在 PowerShell 中也能用。示例:
ps(列出所有正在运行的进程)Get-Process notepad(查找名字叫notepad的进程)ps | Where-Object {$_.CPU -gt 10}(查找 CPU 使用时间超过 10 秒的进程)
# 列出所有进程 (输出会很多,仅示意部分)C:\\Users\\userC> Get-ProcessHandles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName------- ------ ----- ----- ------ -- -- ----------- 1051 58 140596 189812 123.45 1234 1 chrome 210 15 4500 18750 0.50 9876 1 notepad...# 查找名为 notepad 的进程C:\\Users\\userC> Get-Process -Name notepad# (输出类似上面 notepad 那一行) -
kill或spps(结束进程)功能:终止指定的进程(PowerShell 中实际命令是
Stop-Process)。taskkill是传统 CMD 命令,也能用。注意:强制终止进程可能导致数据丢失或系统不稳定,请谨慎使用。
示例:
Stop-Process -Name notepad(停止所有名为notepad的进程)Stop-Process -Id 9876 -Force(强制停止进程 ID 为9876的进程)taskkill /IM explorer.exe /F(使用 CMD 命令强制结束资源管理器进程)
# 停止所有名为 notepad 的进程 (会提示确认)C:\\Users\\userC> Stop-Process -Name notepad# 强制停止 ID 为 9876 的进程 (无确认)C:\\Users\\userC> Stop-Process -Id 9876 -Force -
whoami(显示当前用户)功能:显示当前登录的用户名。PowerShell 中也可以用
$env:USERNAME获取。示例:
whoami$env:USERNAME
C:\\Users\\userC> whoamimydomain\\usercC:\\Users\\userC> $env:USERNAMEuserC -
Get-ComputerInfo(显示系统信息)功能:显示关于计算机硬件和操作系统的详细信息。
systeminfo是传统 CMD 命令,也能用但输出格式不易处理。示例:
Get-ComputerInfo(显示全面的系统信息,可能较多)Get-ComputerInfo | Select-Object OsName, OsVersion, CsManufacturer, CsModel(只看操作系统名、版本、电脑制造商和型号)
# 查看部分系统信息C:\\Users\\userC> Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, CsManufacturer, CsModelWindowsProductName : Windows 10 ProWindowsVersion : 2009CsManufacturer : Dell Inc.CsModel : XPS 15 9570 -
$PSVersionTable(显示 PowerShell 版本)功能:显示当前 PowerShell 的版本信息。
ver是传统 CMD 命令,显示的是 CMD 的模拟版本或 Windows 版本。示例:
$PSVersionTable
C:\\Users\\userC> $PSVersionTableName Value---- -----PSVersion7.3.6PSEditionCoreGitCommitId 7.3.6OS Microsoft Windows 10.0.19045Platform Win32NTPSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}PSRemotingProtocolVersion 2.3SerializationVersion 1.1.0.1WSManStackVersion 3.0 -
Stop-Computer/Restart-Computer(关机或重启)功能:关闭或重新启动本地或远程计算机。
shutdown是传统 CMD 命令,也能用。注意:这些命令会中断当前工作,请保存好所有文件。
示例:
Stop-Computer -Force(立即强制关闭本机)Restart-Computer -Force(立即强制重启本机)shutdown /s /t 120(使用 CMD 命令,120 秒后关闭本机)shutdown /r /t 0(使用 CMD 命令,立即重启本机)
# 立即重启本机 (需要管理员权限)C:\\Users\\userC> Restart-Computer -Force
五、网络相关命令
这些命令用于检查和管理网络配置与连接。
-
ipconfig(显示网络配置)功能:显示 TCP/IP 网络配置信息。PowerShell 中推荐使用
Get-NetIPConfiguration获取更详细且结构化的信息。示例:
ipconfig(显示基本 IP 地址、子网掩码、默认网关)ipconfig /all(显示详细的网络配置信息,包括 MAC 地址、DNS 服务器等)Get-NetIPConfiguration(PowerShell 方式,显示接口的 IP 配置详情)
# 使用 ipconfig 显示基本信息C:\\Users\\userC> ipconfigWindows IP 配置以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : mycompany.local IPv4 地址 . . . . . . . . . . . . : 192.168.1.100 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1# 使用 PowerShell 命令获取信息 (部分)C:\\Users\\userC> Get-NetIPConfiguration | Where-Object {$_.IPv4DefaultGateway -ne $null} | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGatewayInterfaceAlias IPv4Address IPv4DefaultGateway-------------- ----------- ------------------以太网 {192.168.1.100} {192.168.1.1} -
ping(测试连接)功能:测试与另一台主机(IP 地址或域名)的网络连通性。PowerShell 中推荐使用
Test-Connection。示例:
ping www.google.com(测试到 Google 的连通性)ping 192.168.1.1(测试到默认网关的连接)Test-Connection www.baidu.com -Count 2(PowerShell 方式,向百度发送 2 个 ICMP 请求)
# 使用 ping 测试到 8.8.8.8 (Google DNS)C:\\Users\\userC> ping 8.8.8.8 -n 2正在 Ping 8.8.8.8 具有 32 字节的数据:来自 8.8.8.8 的回复: 字节=32 时间=10ms TTL=118来自 8.8.8.8 的回复: 字节=32 时间=9ms TTL=1188.8.8.8 的 Ping 统计信息: 数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 9ms,最长 = 10ms,平均 = 9ms# 使用 Test-ConnectionC:\\Users\\userC> Test-Connection 8.8.8.8 -Count 1Source Destination IPV4Address IPV6Address Bytes Time(ms)------ ----------- ----------- ----------- ----- --------MYPC 8.8.8.8 8.8.8.8 32 9 -
Resolve-DnsName(查询域名)功能:执行 DNS 查询,将主机名解析为 IP 地址,或反向解析 IP 地址为主机名。
nslookup是传统 CMD 命令,也能用。示例:
Resolve-DnsName www.microsoft.com(解析微软官网的 IP 地址)Resolve-DnsName 8.8.8.8(反向解析 IP 地址8.8.8.8)nslookup www.github.com(使用 CMD 命令查询 GitHub 的 IP)
# 解析 www.microsoft.com 的 A 记录 (IPv4)C:\\Users\\userC> Resolve-DnsName www.microsoft.com -Type AName Type TTL Section IPAddress---- ---- --- ------- ---------www.microsoft.com A 3600 Answer 104.74.192.151# 使用 nslookupC:\\Users\\userC> nslookup www.google.com服务器: UnKnownAddress: 192.168.1.1非权威应答:名称: www.google.comAddresses: 2404:6800:4005:81a::2004 172.217.160.132
六、输出处理与筛选命令
这些命令通常跟在其他命令后面,用 | (管道符) 连接,用来处理和筛选输出结果。
-
|(管道 Pipeline)功能:把前一个命令的输出结果,交给后一个命令去处理。这是 PowerShell 的精髓!
新手提示:想象成一个流水线,数据从左边的命令流到右边的命令。
示例:
dir | Select-Object Name(列出当前目录内容,但只显示名字这一列)Get-Process | Where-Object {$_.CPU -gt 10}(获取所有进程,然后筛选出 CPU 使用时间大于 10 秒的)Get-Service | Sort-Object Status(获取所有服务,然后按状态排序)
-
Where-Object或where或?(筛选对象)功能:根据你设定的条件,筛选出符合条件的数据。
新手提示:
{}里面写筛选条件,$_代表当前正在处理的那个对象(比如一个文件、一个进程)。常用的比较符有-eq(等于),-ne(不等于),-gt(大于),-lt(小于),-like(模糊匹配,可用*通配符),-contains(包含)。示例:
dir D:\\Users\\userD | where {$_.Length -gt 10KB}(找出D:\\Users\\userD目录下大于 10KB 的文件)Get-Service | where {$_.Status -eq \'Stopped\'}(找出所有已停止的服务)Get-Process | where {$_.ProcessName -like \"chrome*\"}(找出所有名字以 “chrome” 开头的进程)
# 找出 F:\\Users\\userF 目录下所有 .txt 文件C:\\Users\\userC> dir F:\\Users\\userF | Where-Object {$_.Extension -eq \'.txt\'} 目录: F:\\Users\\userFMode LastWriteTime Length Name---- ------------- ------ -----a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt-a-h-- 2023/10/27 09:10 50 hidden.txt -
Select-Object或select(选择属性)功能:从输出结果中只挑选你关心的那几列(属性),或者选择指定数量的对象。
示例:
Get-Process | Select-Object Name, ID, WS(只看进程的名字、ID 和工作集内存)dir E:\\Users\\userE | Select-Object Name, Length, LastWriteTime(只看文件/文件夹的名字、大小和最后修改时间)dir C:\\Users\\userC | Select-Object -First 5(只看C:\\Users\\userC目录下的前 5 个项目)Get-Service | Select-Object -Last 3(只看服务列表中的最后 3 个服务)
# 只看进程名和内存使用情况 (前 5 个)C:\\Users\\userC> Get-Process | Select-Object -First 5 Name, WSName WS---- --ApplicationFrameHost 30532audiodg 12188CalculatorApp 22940chrome 78456cmd 6448 -
Sort-Object或sort(排序对象)功能:根据指定的属性对输出结果进行排序。默认升序,加
-Descending参数为降序。示例:
dir D:\\Users\\userD | Sort-Object Name(按名字字母顺序排序)dir E:\\Users\\userE | Sort-Object Length -Descending(按文件大小从大到小排序)Get-Process | Sort-Object WS -Descending(按内存使用量从高到低排序)
# 按 CPU 使用时间降序显示进程 (只显示名字和CPU时间,取前5)C:\\Users\\userC> Get-Process | Sort-Object CPU -Descending | Select-Object Name, CPU -First 5Name CPU---- ---System Idle Process 15000.50chrome 1234.56svchost 876.54explorer 543.21MsMpEng 321.09
七、帮助与发现命令
这些命令帮助你学习和使用 PowerShell。
-
Get-Help或help或man(获取帮助)功能:显示 PowerShell 命令的帮助文档。这是你最好的朋友!
新手提示:如果你不确定一个命令怎么用,或者想看它有哪些参数,就用
help。示例:
help Get-Process(查看Get-Process命令的帮助)help dir -Examples(查看dir(即Get-ChildItem) 的用法示例)help copy -Parameter Path(查看copy(即Copy-Item) 命令的Path参数说明)help about_Operators(阅读关于 PowerShell 运算符的概念性帮助文档)Get-Help Get-ChildItem -Full(显示Get-ChildItem的完整帮助,非常详细)Get-Help Get-Service -Online(在浏览器中打开Get-Service的在线帮助文档)
# 获取 copy 命令的基本帮助C:\\Users\\userC> help copyNAME Copy-ItemSYNOPSIS Copies an item from one location to another.... (后面还有详细说明和参数列表)# 查看 copy 命令的示例C:\\Users\\userC> help copy -Examples... (会显示很多使用示例) -
Update-Help(更新帮助文档)功能:从网上下载最新的 PowerShell 帮助文件。
新手提示:第一次使用 PowerShell 或者很久没用之后,最好运行一次这个命令,确保你的帮助文档是最新。需要管理员权限运行 PowerShell。
示例:
Update-Help(在管理员 PowerShell 窗口中运行)
# 需要在管理员模式下运行PS C:\\WINDOWS\\system32> Update-Help# (会显示下载和安装进度) -
Get-Command或gcm(查找命令)功能:查找 PowerShell 命令(包括 Cmdlet、函数、别名、脚本、应用程序)。
示例:
Get-Command *process*(查找名字里包含 “process” 的命令)Get-Command -Noun Item(查找所有操作 “Item” (项目) 的命令,比如Get-Item,Set-Item,Remove-Item)gcm dir(查看dir这个名字到底对应哪个实际命令)Get-Command -Verb Get(查找所有动词(操作类型)为 “Get” 的命令)
# 查找所有和 \"Service\" 相关的命令C:\\Users\\userC> Get-Command -Noun ServiceCommandType Name Version Source----------- ---- ------- ------Cmdlet Get-Service 7.0.0.0 Microsoft.PowerShell.ManagementCmdlet New-Service 7.0.0.0 Microsoft.PowerShell.Management... (还有 Start-Service, Stop-Service 等)# 查看 \'ls\' 是什么C:\\Users\\userC> gcm lsCommandType Name Version Source----------- ---- ------- ------Alias ls -> Get-ChildItem -
Get-Alias或gal(查看别名)功能:列出 PowerShell 中的命令别名(快捷方式)。
新手提示:很多你习惯的 CMD 或 Linux 命令(如
cd,dir,ls,copy,move,rm,cat,ps,cls)在 PowerShell 里其实是别名,了解它们对应的实际 PowerShell 命令很有用。示例:
Get-Alias(列出所有别名)gal cd(查看cd这个别名对应哪个命令)Get-Alias -Definition Get-Content(查找所有指向Get-Content的别名)
# 查看 \'copy\' 是什么的别名C:\\Users\\userC> Get-Alias copyCommandType Name Version Source----------- ---- ------- ------Alias copy -> Copy-Item
八、其他实用命令
这些命令提供额外功能。
-
cls或clear(清屏)功能:清除屏幕上的所有文字,让界面变干净。(PowerShell 中实际命令是
Clear-Host)。示例:
cls
-
exit(退出)功能:关闭当前的 PowerShell 窗口或会话。
示例:
exit
-
Write-Host(写入主机)功能:向控制台主机直接写入输出,可以指定颜色。
echo是传统 CMD 命令,在 PowerShell 中通常映射到Write-Output。新手提示:
Write-Host主要用于向屏幕显示信息,它的输出不能直接通过管道|传递给下一个命令。如果需要传递数据,应使用Write-Output或直接让命令产生输出。示例:
Write-Host \"操作已完成。\"Write-Host \"警告:文件不存在!\" -ForegroundColor Red(显示红色警告)echo \"Hello World\"(在 PowerShell 中通常等同于Write-Output \"Hello World\")
# 显示绿色成功消息C:\\Users\\userC> Write-Host \"任务成功完成!\" -ForegroundColor Green任务成功完成! -
$env:PATH(环境变量)功能:查看或临时修改环境变量,
PATH是其中最重要的之一,它决定了系统在哪里查找可执行文件。set是传统 CMD 查看环境变量的命令。示例:
$env:PATH(显示当前 PATH 环境变量的值)Get-ChildItem env:(列出所有环境变量)$env:PATH += \";C:\\MyTools\"(将C:\\MyTools临时添加到 PATH 末尾,仅在当前会话有效)
# 查看 PATH 变量 (输出会很长)C:\\Users\\userC> $env:PATHC:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;...# 临时添加路径 (仅当前窗口有效)C:\\Users\\userC> $env:PATH += \";E:\\userE\\my_scripts\"
九、脚本执行策略 (新手常见问题)
PowerShell 有一个安全特性叫做“执行策略”,它控制哪些 PowerShell 脚本(.ps1 文件)可以运行。
-
Get-ExecutionPolicy(查看执行策略)功能:查看当前系统允许 PowerShell 运行哪种类型的脚本。
示例:
Get-ExecutionPolicy
-
Set-ExecutionPolicy(设置执行策略)功能:更改脚本执行策略。需要管理员权限 运行 PowerShell 来更改全局策略。
新手提示:
Restricted: (默认) 不允许运行任何.ps1脚本。AllSigned: 只允许运行由受信任发布者签名的脚本。RemoteSigned: 推荐设置。允许运行本地创建的脚本,但从网上下载的脚本必须有签名才能运行。Unrestricted: 允许运行所有脚本,不安全。Bypass: 什么都不阻止,也不警告。
示例 (在管理员 PowerShell 中运行):
Set-ExecutionPolicy RemoteSigned(更改为允许本地脚本和签名的远程脚本)Set-ExecutionPolicy Restricted(恢复默认)Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser(只为当前用户更改策略,不需要管理员权限)
# 查看当前策略C:\\Users\\userC> Get-ExecutionPolicyRestricted# (以管理员身份运行 PowerShell)# 更改策略为 RemoteSignedPS C:\\WINDOWS\\system32> Set-ExecutionPolicy RemoteSigned# (会提示确认风险,输入 Y 回车)执行策略更改执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险...是否要更改执行策略?[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y# 再次查看策略PS C:\\WINDOWS\\system32> Get-ExecutionPolicyRemoteSigned
十、小技巧与注意事项
- 大小写不敏感:大多数 PowerShell 命令和参数不区分大小写(例如,
dir和DIR相同),但文件名和路径通常还是区分的,与 Windows 文件系统行为一致。 - Tab 自动补全:输入命令或路径的一部分,然后按
Tab键,PowerShell 会尝试自动补全。连续按Tab可以循环浏览可能的选项。这是提高效率的关键! - 命令历史:按键盘的
↑(上箭头) 和↓(下箭头) 键可以浏览你之前输入过的命令。 - 查看帮助:遇到不熟悉的命令,立即使用
Get-Help(或help)。例如help Get-ChildItem -Examples。 - 管道组合
|:将一个命令的输出传递给下一个命令处理,实现复杂任务。例如Get-Process | Sort-Object CPU -Descending | Select-Object -First 5。 - 输出重定向
>和>>:将命令输出保存到文件。>覆盖文件,>>追加到文件。例如dir C:\\Windows > C:\\Users\\userC\\windows_files.txt。 - 注意安全:像
del/rm/Remove-Item,Stop-Process -Force,Set-ExecutionPolicy Unrestricted等命令具有潜在风险。操作前请务必确认目标和后果。 - 管理员权限:修改系统设置、管理服务、安装软件、更改执行策略等操作通常需要以管理员身份运行 PowerShell。右键点击 PowerShell 图标选择“以管理员身份运行”。
十一、实践练习
尝试完成以下任务来熟悉命令:
简单任务
-
在
C:\\Users\\userC目录下创建一个名为practice的文件夹。cd C:\\Users\\userCmkdir practice -
在
practice文件夹里创建一个名为hello.txt的文件,内容为 “Hello PowerShell Practice!”。cd C:\\Users\\userC\\practice\"Hello PowerShell Practice!\" > hello.txt -
查看
hello.txt文件的内容。type .\\hello.txt -
将
hello.txt重命名为greeting.txt。ren .\\hello.txt greeting.txt -
列出
practice文件夹的内容,只显示文件名。dir -Name -
删除
greeting.txt文件。del .\\greeting.txt -
返回
C:\\Users\\userC目录,然后删除practice文件夹。cd ..rmdir .\\practice
进阶任务
-
查找当前系统中所有正在运行的服务,并按显示名称排序。
Get-Service | Where-Object {$_.Status -eq \'Running\'} | Sort-Object DisplayName -
找出当前系统中内存使用量(WS)最大的 5 个进程,并显示它们的名称和内存使用量。
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, WS -
测试你是否能 ping 通
www.qq.com。ping www.qq.com -
将
E:\\Users\\userE目录下的所有.log文件复制到F:\\Users\\userF\\LogsBackup目录下(假设LogsBackup文件夹已存在)。copy E:\\Users\\userE\\*.log F:\\Users\\userF\\LogsBackup\\
十二、结尾
命令行工具初看可能令人生畏,但熟能生巧。多动手练习这些命令,遇到问题时积极使用 Get-Help 探索更多选项和功能。掌握 PowerShell 将极大地提升你的 Windows 操作和自动化能力。


