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\userD D:\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\userF Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/10/27 09:00 dir1 d----- 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 -Name dir1 dir2 file1.txt file2.txt # 包括隐藏文件 F:\Users\userF> dir -Force 目录: F:\Users\userF Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/10/27 09:00 dir1 d----- 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\userE Mode 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> pwd Path ---- 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\userC Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/10/27 11:00 test # 在 D 盘 userD 目录下创建多级目录 dir1\dir2 C:\Users\userC> mkdir D:\Users\userD\dir1\dir2 目录: D:\Users\userD\dir1 Mode 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\userF C:\Users\userC> copy E:\Users\userE\test.txt F:\Users\userF\ # 递归复制 C 盘 userC 目录下的 myProject 文件夹到 D:\backup C:\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\userD C:\Users\userC> move C:\Users\userC\test.txt D:\Users\userD\ # 重命名 D:\Users\userD\old.txt 为 new.txt D:\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.txt D:\Users\userD> ren .\old.txt new.txt # 将 C:\Users\userC\MyFolder 重命名为 MyProject C:\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.txt This 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 5 Line 96 Line 97 Line 98 Line 99 Line 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.txt C:\Users\userC> type .\greeting.txt Hello from PowerShell! # 向文件追加内容 C:\Users\userC> Get-Date | Out-String >> .\greeting.txt # 使用 Out-String 确保日期格式正确追加 C:\Users\userC> type .\greeting.txt Hello 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-Process Handles 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> whoami mydomain\userc C:\Users\userC> $env:USERNAME userC -
Get-ComputerInfo(显示系统信息)功能:显示关于计算机硬件和操作系统的详细信息。
systeminfo是传统 CMD 命令,也能用但输出格式不易处理。示例:
Get-ComputerInfo(显示全面的系统信息,可能较多)Get-ComputerInfo | Select-Object OsName, OsVersion, CsManufacturer, CsModel(只看操作系统名、版本、电脑制造商和型号)
# 查看部分系统信息 C:\Users\userC> Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, CsManufacturer, CsModel WindowsProductName : Windows 10 Pro WindowsVersion : 2009 CsManufacturer : Dell Inc. CsModel : XPS 15 9570 -
$PSVersionTable(显示 PowerShell 版本)功能:显示当前 PowerShell 的版本信息。
ver是传统 CMD 命令,显示的是 CMD 的模拟版本或 Windows 版本。示例:
$PSVersionTable
C:\Users\userC> $PSVersionTable Name Value ---- ----- PSVersion 7.3.6 PSEdition Core GitCommitId 7.3.6 OS Microsoft Windows 10.0.19045 Platform Win32NT PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…} PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 WSManStackVersion 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> ipconfig Windows 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, IPv4DefaultGateway InterfaceAlias 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=118 8.8.8.8 的 Ping 统计信息: 数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 9ms,最长 = 10ms,平均 = 9ms # 使用 Test-Connection C:\Users\userC> Test-Connection 8.8.8.8 -Count 1 Source 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 A Name Type TTL Section IPAddress ---- ---- --- ------- --------- www.microsoft.com A 3600 Answer 104.74.192.151 # 使用 nslookup C:\Users\userC> nslookup www.google.com 服务器: UnKnown Address: 192.168.1.1 非权威应答: 名称: www.google.com Addresses: 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\userF Mode 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, WS Name WS ---- -- ApplicationFrameHost 30532 audiodg 12188 CalculatorApp 22940 chrome 78456 cmd 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 5 Name CPU ---- --- System Idle Process 15000.50 chrome 1234.56 svchost 876.54 explorer 543.21 MsMpEng 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 copy NAME Copy-Item SYNOPSIS 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 Service CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-Service 7.0.0.0 Microsoft.PowerShell.Management Cmdlet New-Service 7.0.0.0 Microsoft.PowerShell.Management ... (还有 Start-Service, Stop-Service 等) # 查看 'ls' 是什么 C:\Users\userC> gcm ls CommandType 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 copy CommandType 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:PATH C:\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-ExecutionPolicy Restricted # (以管理员身份运行 PowerShell) # 更改策略为 RemoteSigned PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned # (会提示确认风险,输入 Y 回车) 执行策略更改 执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险...是否要更改执行策略? [Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y # 再次查看策略 PS C:\WINDOWS\system32> Get-ExecutionPolicy RemoteSigned
十、小技巧与注意事项
- 大小写不敏感:大多数 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\userC mkdir 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 操作和自动化能力。
- 点赞
- 收藏
- 关注作者
评论(0)