Windows 终端命令详解:PowerShell 初学者指南

举报
IvanCodes 发表于 2025/11/08 21:24:07 2025/11/08
【摘要】 Windows 终端是一个命令行工具,允许用户通过文本命令与系统交互,执行文件管理、系统配置和网络诊断等操作。PowerShell 是 Windows 终端的现代版本,相比传统的命令提示符(CMD),它功能更强大,支持脚本编写和复杂任务处理。本文将以 PowerShell 为主,带你从零开始学习。

一、引言

什么是 Windows 终端?

Windows 终端是一个命令行工具,允许用户通过文本命令与系统交互,执行文件管理、系统配置和网络诊断等操作。PowerShell 是 Windows 终端的现代版本,相比传统的命令提示符(CMD),它功能更强大,支持脚本编写和复杂任务处理。本文将以 PowerShell 为主,带你从零开始学习。

如何打开 PowerShell?

有以下几种方法可以打开 PowerShell:

  1. 按 ==Win + R 键==,输入 ==powershell==,然后按回车。
  2. 在任务栏搜索框输入 “PowerShell”,点击打开。
  3. 按 ==Win + X 键==,然后选择终端管理员

打开 PowerShell 后,你会看到类似以下的提示符:

PS C:\Users\userC>

这表示你当前在 C 盘的 Users\userC 目录下。本文假设系统有 C 盘(用户 userC)、D 盘(用户 userD)、E 盘(用户 userE)、F 盘(用户 userF),我们将通过示例展示命令的运行效果。

二、基础导航命令

这些命令帮助你在文件夹之间移动和查看内容。

  • cd (切换目录)

    功能:更改你当前所在的文件夹位置(PowerShell 中实际命令是 Set-Locationcd 是它的常用别名)。

    新手提示:这可能是你用得最多的命令之一!

    示例:

    • 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>
    
  • dirls (列出目录内容)

    功能:显示当前文件夹里的文件和子文件夹(PowerShell 中实际命令是 Get-ChildItemdirls 是它的常用别名)。

    新手提示: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-Locationpwd 是它的别名)。

    新手提示:当你切换了太多次目录,不确定自己在哪时,用这个命令!

    示例:

    • pwd
    D:\Users\userD> pwd
    
    Path
    ----
    D:\Users\userD
    

三、文件与文件夹管理命令

这些命令用于管理文件和文件夹。

  • mkdirmd (创建文件夹)

    功能:创建一个新的文件夹(PowerShell 中实际命令是 New-Item -ItemType Directory)。

    示例:

    • mkdir C:\Users\userC\test(在 C:\Users\userC 创建 test 文件夹)。
    • md D:\Users\userD\dir1\dir2(在 D:\Users\userD 下同时创建 dir1dir1\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
    
  • copycp (复制文件/文件夹)

    功能:复制文件或文件夹(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
    
  • movemv (移动或重命名文件/文件夹)

    功能:移动文件或文件夹到另一个地方,或者在原地给它改个名字(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
    
  • delrmrmdirrderase (删除文件/文件夹)

    功能:删除文件或文件夹(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
    
  • renrename (重命名)

    功能:重命名文件或文件夹(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
    
  • typecatgc (查看文件内容)

    功能:在屏幕上显示文本文件的内容(PowerShell 中实际命令是 Get-Content)。

    新手提示:cat 是 Linux/Mac 用户熟悉的命令。gcGet-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 的最后 5C:\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!
    2023102715:30:00
    

四、系统信息与管理命令

这些命令用于查看和管理系统。

  • psgps (查看进程)

    功能:列出当前正在运行的程序(进程)(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 那一行)
    
  • killspps (结束进程)

    功能:终止指定的进程(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
    
    # 强制停止 ID9876 的进程 (无确认)
    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-Objectwhere? (筛选对象)

    功能:根据你设定的条件,筛选出符合条件的数据。

    新手提示:{} 里面写筛选条件,$_ 代表当前正在处理的那个对象(比如一个文件、一个进程)。常用的比较符有 -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-Objectselect (选择属性)

    功能:从输出结果中只挑选你关心的那几列(属性),或者选择指定数量的对象。

    示例:

    • 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-Objectsort (排序对象)

    功能:根据指定的属性对输出结果进行排序。默认升序,加 -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-Helphelpman (获取帮助)

    功能:显示 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-Commandgcm (查找命令)

    功能:查找 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-Aliasgal (查看别名)

    功能:列出 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
    

八、其他实用命令

这些命令提供额外功能。

  • clsclear (清屏)

    功能:清除屏幕上的所有文字,让界面变干净。(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 命令和参数不区分大小写(例如,dirDIR 相同),但文件名和路径通常还是区分的,与 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 图标选择“以管理员身份运行”。

十一、实践练习

尝试完成以下任务来熟悉命令:

简单任务

  1. C:\Users\userC 目录下创建一个名为 practice 的文件夹。

    cd C:\Users\userC
    mkdir practice
    
  2. practice 文件夹里创建一个名为 hello.txt 的文件,内容为 “Hello PowerShell Practice!”。

    cd C:\Users\userC\practice
    "Hello PowerShell Practice!" > hello.txt
    
  3. 查看 hello.txt 文件的内容。

    type .\hello.txt
    
  4. hello.txt 重命名为 greeting.txt

    ren .\hello.txt greeting.txt
    
  5. 列出 practice 文件夹的内容,只显示文件名。

    dir -Name
    
  6. 删除 greeting.txt 文件。

    del .\greeting.txt
    
  7. 返回 C:\Users\userC 目录,然后删除 practice 文件夹。

    cd ..
    rmdir .\practice
    

进阶任务

  1. 查找当前系统中所有正在运行的服务,并按显示名称排序。

    Get-Service | Where-Object {$_.Status -eq 'Running'} | Sort-Object DisplayName
    
  2. 找出当前系统中内存使用量(WS)最大的 5 个进程,并显示它们的名称和内存使用量。

    Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, WS
    
  3. 测试你是否能 ping 通 www.qq.com

    ping www.qq.com
    
  4. E:\Users\userE 目录下的所有 .log 文件复制到 F:\Users\userF\LogsBackup 目录下(假设 LogsBackup 文件夹已存在)。

    copy E:\Users\userE\*.log F:\Users\userF\LogsBackup\
    

十二、结尾

命令行工具初看可能令人生畏,但熟能生巧。多动手练习这些命令,遇到问题时积极使用 Get-Help 探索更多选项和功能。掌握 PowerShell 将极大地提升你的 Windows 操作和自动化能力。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。