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 操作和自动化能力。