Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

必备 PowerShell 命令:初学者速查表

必备 PowerShell 命令:初学者速查表

Aug 25, 2025

PowerShell 是一种面向命令行的外壳(shell)和脚本语言,可用于自动化 Windows 管理,并在不同平台上管理系统。初学者应掌握诸如 Get-HelpGet-ChildItemGet-ProcessSet-LocationNew-ItemExport-Csv 之类的 cmdlet。PowerShell 支持基于对象的管道、用于提高效率的别名、远程会话,以及用于安全的执行策略。通过实践,这些命令将成为自动化、系统管理和安全脚本编写的基础。

PowerShell 入门

什么是 PowerShell?

PowerShell 是一种功能强大的命令行外壳,支持脚本语言,并提供用于本地和远程管理计算机资源的工具。

PowerShell 在 Windows 管理中的优势

Windows PowerShell 命令可实现对重复性任务的自动化,例如管理用户、服务、文件或脚本。PowerShell 还可用于管理系统、远程管理,并集成诸如 Active Directory 、Entra ID 和 Exchange 等系统。

PowerShell 与命令提示符(Command Prompt)的区别

PowerShell 与命令行在功能、设计和能力方面有所不同。为了为手头任务选择合适的选项,请考虑以下内容:

-

Command line

PowerShell

Command syntax

Simple and limited to basic tasks

Complex commands in the verb-noun format

Scripting

Limited scripting capabilities

Advanced scripting capabilities

Output

Plain text

Can be structured objects such as tables and lists

Extensibility

Limited extensibility

Highly extensible through modules and .Net libraries, custom cmdlets and functions

Pipelines

Supports piping of plain text from one command to another

Supports piping of objects with properties

PowerShell 命令的关键组件

PowerShell Cmdlet:动词-名词结构

PowerShell 命令使用“动词-名词”语法。动词部分指定要执行的操作,而命令的名词部分则定义将执行该操作的对象。示例包括 Get-processNew-itemSet-DateRemove-Item

常见动词包括:

  • Get: 检索数据
  • Set: 修改对象的属性
  • Add: 向集合中添加一个项目
  • Stop: 停止一个进程或服务
  • 开始: 启动一个进程或服务
  • 清除: 从集合中移除所有项目

PowerShell 别名:快捷方式与对旧版的支持

别名是 cmdlet、函数和脚本的简短名称。别名用于提高输入效率,并支持旧版本。你可以通过输入 Get-Alias 命令来查看当前 PowerShell 会话中定义的所有别名。

下面是一些常用的别名:

  • Ls —Get-ChildItem 的别名:Get-ChildItem
  • Gci —另一个别名:Get-ChildItem
  • Gc —Get-Content 的别名 Get-Content
  • Rm —Remove-Item 的别名:Remove-Item
  • Cd —Set-Location 的别名:Set-Location
  • Cls — 别名(Alias for )Clear-Host
  • Dir — 别名(Alias for )Get-ChildItem

理解 PowerShell 命令中的参数

参数用于向命令、函数和脚本传递值或选项,以修改它们的操作。要查看 cmdlet 的参数详细信息,请运行 Get-Help

参数的基本类型如下:

  • 位置参数 会按特定顺序传递,而无需显式命名它们,如下示例所示:
      Copy-Item "C:\File1.txt" "D:\Backup\"
      
  • 命名参数 通过以下方式指定: 前缀,并且可以以任意顺序提供。
      Get-Process -Name "notepad" -Id 1234
      
  • 开关参数 不需要提供值,因为它们的工作方式类似布尔标志开关的存在会启用某项功能,而缺失则会禁用该功能。
      Remove-Item "C:\temp\file.txt" -Confirm
      
  • 必需参数 必须提供;如果省略其中一个,PowerShell 将提示输入值。
      Get-MyProcess -ProcessName "chrome"
      

初学者必备的 PowerShell 命令

入门的基础命令

要熟悉的基础 PowerShell 命令之一是 Get-Help,它会显示你想学习并使用的某个 cmdlet 的相关信息。添加参数 -examples 还会提供示例。

例如,要了解更多关于 Get-ChildItem 这个 cmdlet,你可以输入 Get-Help Get-ChildItemGet-Help Get-ChildItem -examples,如下所示。

Image

另一个有用的 cmdlet 是 Get-Command。例如输入 Get-Command *Service* 将列出所有名称中包含“Service”的命令。

Image

显示文件系统内容

该命令会显示当前目录中的项目:

      Get-ChildItem
      

而此命令会显示 Office 目录中的项目:

      Get-ChildItem D:\Office
      
Image

与对象协作

以下 cmdlet 将获取本地计算机上的 Notepad 应用程序进程:

      Get-Process -Name "notepad"
      

而此命令将获取使用超过 10% 内存(RAM)的进程:

      Get-Process | Where-Object {$_.CPU -gt 10}
      

下面的命令将获取 Notepad 的每个实例,并通过 ID 停止该进程。

      Get-Process | Where-Object { $_.Name -eq "notepad" } | ForEach-Object { Stop-Process -Id $_.Id }
      
Image

检查基本系统信息

下面的命令将获取状态为 running 的 Windows 服务:

      Get-Service | Where-Object { $_.Status -eq 'Running' }
      

该命令将获取前 10 条事件日志:

      Get-EventLog -LogName System -Newest 10
      

该命令还将获取名为“Wi-fi”的网络适配器的统计信息:

      Get-NetAdapterStatistics -Name "Wi-fi"
      
Image

用于文件和文件夹管理的 PowerShell 命令

浏览目录:Set-Location Get-ChildItem

该 cmdlet 会将 PowerShell 的当前位置设置为 D:\Office\Project

      Set-Location -Path "D:\Office\Project"
      

要获取目录内容,请使用以下命令:

      Get-ChildItem, dir, ls
      

要显示 Project 目录中的文件和文件夹,请使用以下代码:

      Get-ChildItem "D:\Office\Project"dir  "D:\Office\Project"
      

此命令将列出 Project 目录中的文件:

      Get-ChildItem "D:\Office\Project" -file
      

此命令将列出 Project 目录中的文件夹:

      dir  "D:\Office\Project" -directory
      
Image

创建、复制和删除文件:New-ItemCopy-ItemRemove-Item

此命令将创建文本文件 myfileProject 文件夹中:

      New-Item -Path "D:\Office \Project\myfile.txt" -ItemType File
      

此命令将把 myfile.txtProject 文件夹复制到 startup 文件夹:

      Copy-Item -Path "D:\Office \Project\myfile.txt" -Destination "D:\Office \Project\startup\myfile.txt"
      

该命令将删除 myfile.txt(从 Project 文件夹中删除):

      Remove-Item -Path "D:\Office \Project\myfile.txt"
      

下面的命令将删除 Project 文件夹(包括其中的所有内容):

      Remove-Item -Path "D:\Office \Project" -Recurse
      

检查文件夹内容并搜索:Get-ChildItemSelect-String

该命令将列出所有类型为 .txt 的文件:

      Get-ChildItem -Path "D:\Office\Project" -Filter "*.txt"
      

以下命令将列出所有隐藏文件:

      Get-ChildItem -Path "D:\Office\Project" -Hidden
      

该命令将在文件 Projectlogs.txt 中搜索字符串 error:

      Select-String -Path "D:\Office\Project\projectlogs.txt" -Pattern "error"
      
Image

系统与进程管理

管理系统服务:Get-Service、Start-Service、Stop-Service

该命令将获取名称中包含字符串 SQL 的所有服务:

      Get-Service -Name "*SQL*"
      
Image

该命令将获取名称以字符串 Windows 开头的所有服务:

      Get-Service -DisplayName "Windows *"
      
Image

使用下面的 cmdlet 获取所有设置为自动启动的服务:

      Get-Service | Where-Object {$_.StartType -eq "Automatic"}
      
Image

服务的显示名称可能与实际服务名称不同。请确保在下面的命令中提供服务名称。

要启动服务,请使用类似这样的命令:

      Start-Service -Name "spooler"
      

要停止服务,请使用类似这样的命令:

      Stop-Service -Name "autotimesvc"
      

处理进程:Get-Process、Start-Process、Stop-Process

如下面所示,你可以使用 -Name 参数获取进程:

      Get-Process -Name notepad
      

下面的命令会获取进程,并将其通过管道处理,从而以表格形式显示它们的名称、ID 和 CPU 使用情况:

      Get-Process | Format-Table Name, Id, CPU -AutoSize
      
Image

该 cmdlet 将启动 chrome.exe 并打开指定的网站:

      Start-Process chrome.exe "https://www.google.com"
      
Image

以下是启动记事本的方法:

      Start-Process -FilePath "notepad.exe"
      

下面的脚本将启动记事本,等待 5 秒,然后停止所有记事本进程:

      Start-Process -FilePath "notepad.exe" -PassThruWrite-Host "Notepad started."Start-Sleep -Seconds 5write-host "waiting for 5 seconds"stop-process -name notepadWrite-host "Notepad stopped"
      
Image

要停止单个进程,请使用如下命令:

      Stop-Process -Name notepad
      

要停止多个进程,请按如下方式列出:

      Stop-Process -Name notepad, chrome
      

访问并监控系统日志:Get-EventLogGet-WinEvent

要获取事件日志条目,可以使用较旧的 cmdlet Get-EventLog。例如,以下是从应用程序事件日志中获取最新 10 条错误条目的方法:

      Get-EventLog -LogName Application -EntryType Error -newest 10
      
Image

另外,你也可以使用更现代的 Get-WinEvent cmdlet。以下是获取应用程序日志中最近 10 条记录的方法:

      Get-WinEvent -LogName Application -MaxEvents 10
      
Image

数据和内容处理命令

读取和写入文件:Get-ContentSet-ContentOut-File

要读取“Project”文件夹中的 myfile.txt 的内容,请使用以下命令:

      Get-Content -Path "D:\Office\Project\myfile.txt"
      

要仅读取前五行,请按如下所示更改命令:

      Get-Content -Path "D:\Office\Project\myfile.txt" -TotalCount 5
      
Image

要向 myfile.txt 写入文本,可以使用 Set-Content cmdlet:

      Set-Content -Path "D:\Office\Project\myfile.txt"" -Value "Welcome to PowerShell blog"
      

此外,你也可以使用 Add-Content,像这样:

      Add-Content -Path "D:\Office\Project\myfile.txt" -Value "Are you new to PowerShell?"
      

Out-File cmdlet 会将输出发送到文件;它通常用于格式化输出。下面的 cmdlet 会将 Hello, World! 写入到 myfile.txt:

      "Hello, World!" | Out-File -FilePath "D:\Office\Project\myfile.txt "
      

面向初学者的 Windows PowerShell 脚本教程(PDF)

了解更多

导出和导入数据:Export-CsvImport-Csv

此命令将获取指定参数下进程 notepad 的信息,并将其导出到文件 processes.csv

      Get-Process -Name notepad | Select-Object Name, Id, CPU | Export-Csv -Path "D:\Office\Project\Processes.csv" -NoTypeInformation
      

要导入 CSV 文件,请使用 Import-Csv. 此命令会将刚刚创建的 CVS 文件导入到另一个 cmdlet 中,该 cmdlet 会遍历对象,并通过 Id 列获取进程:

      Import-Csv -Path "D:\Office\Project\Processes.csv" | ForEach-Object { Get-Process -Id $_.Id }
      
Image

管理和转换数据格式:ConvertTo-HtmlConvertTo-Json

下面的命令将获取两个正在运行的进程的信息,并将其转换为 HTML 格式:

      Get-Process -Name "notepad" , "chrome" | Select-Object Name, Id, CPU | ConvertTo-Html -Property Name, Id, CPU -Title "Process Report" | Out-File "D:\Office\Project\ProcessReport.html"
      
Image

同样,下面的命令会将信息导出为 JSON 格式:

      Get-Process -Name "notepad" , "chrome"  | Select-Object Name, Id, CPU, StartTime| ConvertTo-Json -Depth 2 | Out-File "D:\Office\Project\Processes.json"
      
Image

网络与远程管理

检查连接性:Test-Connection,Resolve-DnsName

Test-Connection 命令会向指定的远程主机发送 ICMP 回显请求(ping),并检查该主机是否可达。

例如,此命令会尝试通过互联网与 google.com 建立连接:

      Test-Connection -ComputerName google.com
      

该命令还会检查与两个按名称指定的主机以及一个按其 IP 地址指定的主机之间的连接性:

      Test-Connection -ComputerName "google.com" , "microsoft.com" , "192.168.0.1"
      

要检查特定的 TCP 端口,请使用 -Port 参数:

      Test-NetConnection -ComputerName google.com -Port 443
      
Image

此命令将测试计算机的名称解析,以检查特定计算机是否存在于我们的网络中:

      Resolve-DnsName -Name DC1
      
Image

或者,我们也可以通过 IP 地址来指定设备:

      Resolve-DnsName -Name 192.168.0.108
      
Image

要查询特定类型的记录,请添加 -Type 参数,并使用诸如 A(地址)、 AAAA (IPv6)、 CNAMEMX(邮件交换)。

使用远程会话:Enter-PSSessionExit-PSSession

只要在目标主机上启用 PowerShell 远程功能,就可以使用 PowerShell 远程管理主机。要在主机上启用 PowerShell 远程功能,请使用管理员权限运行以下命令:

      Enable-PSRemoting -Force
      

要连接到远程主机,请使用以下命令:

      Enter-PSSession -ComputerName "DC1"
      

如果未在特权用户上下文中运行 PowerShell,系统会提示你为远程会话输入用户上下文的凭据。

建立远程 PowerShell 会话后,你可以根据在该服务器上的权限,在目标主机上运行命令和脚本。例如,运行 Get-Process 将从远程计算机获取信息:

Image

要退出会话,只需使用以下命令。

      Exit-PSSession.
      

管理远程命令:Invoke-CommandNew-PSSession

要在远程主机上以非交互方式运行命令,请使用 Invoke-Command cmdlet。例如,要获取目标主机 DC1 上的记事本(Notepad)进程,请运行以下 cmdlet:

      Invoke-Command -ComputerName DC1 -ScriptBlock { Get-Process -Name Notpad }
      

如果你想为重复操作建立一个持久会话,请使用 New-PSSession。下面介绍如何建立新的 PS 会话并将其存储到变量中:

      $session = New-PSSession -ComputerName DC1
      

然后运行以下命令进入远程 PowerShell 会话:

      Enter-PSSession -Session $session
      

之后,我们就可以像在本地主机上原生运行命令一样在目标主机上运行命令,如下所示:

      Get-Process notepad
      
Image

安全性与执行策略

PowerShell 执行策略:Get-ExecutionPolicy,Set-ExecutionPolicy

PowerShell 执行策略有助于防止未经授权或恶意脚本的执行。存在不同的策略类型和作用范围。

执行策略的类型

  • 受限 — 不允许运行脚本;只能执行交互式命令。这是新安装 Windows 的默认设置。
  • 全部签名 — 只有由受信任发布者签名的脚本才能运行。即使先前已被信任,系统也会提示用户确认脚本的发布者。
  • RemoteSigned — 本地创建的脚本可以在不进行签名的情况下运行。来自互联网下载的脚本必须由受信任的发布者进行签名。
  • Unrestricted — 所有脚本都可以在不受限制的情况下运行。在运行从互联网下载的脚本时,会提示确认。
  • Bypass — 不受限制,也不会出现警告;所有脚本都可以无视来源而运行。
  • Undefined — 当前作用域中未设置执行策略。系统会从更广的作用域继承执行策略,例如 LocalMachine。

执行策略的作用域

  • CurrentUser — 影响当前登录的用户,并在该用户的后续会话中持续生效。
  • LocalMachine — 适用于计算机上的所有用户和会话。修改需要管理员权限。
  • Process — 仅影响当前的 PowerShell 会话。会话结束后不会保留。

检查并修改执行策略

要验证实际生效的执行策略,请输入以下命令:

      Get-ExecutionPolicy
      

要设置执行策略,请使用下面的命令并指定策略名称。如需指定范围,可以使用 -Scope 参数。

      Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
      
Image

管理权限和角色: Get-ACL Set-ACL

访问控制列表(ACL)用于控制用户和组在文件、文件夹以及其他对象上的权限。基本的 ACL 权限包括读取、写入、执行、删除和修改。

要获取文件的 ACL,请使用 Get-ACL cmdlet 并提供文件路径:

      Get-Acl -Path "D:\Office\Project\Processes.csv"
      
Image

要复制一个文件的 ACL 并应用到另一个文件,请执行以下步骤:

  1. 获取源文件的 ACL 并将其存储到变量中:
      $SourcefileACL = Get-Acl -Path "D:\Office\Project\Processes.csv"
      
  • 将已保存的 ACL 设置到目标文件:
      Set-ACL -Path "D:\Office\Project\Processes1.json" -AclObject $SourceACL
      

要检查 ACL 是否设置正确,请使用以下命令:

      Get-Acl -Path "D:\Office\Project\Processes1.json"
      
Image

使用证书保护脚本:Set-AuthenticodeSignature,ConvertTo-SecureString

创建并应用证书

使用 Set-AuthenticodeSignature cmdlet 可为脚本或文件应用数字签名。该签名可确保用户:脚本来源于受信任的渠道,并且自签名以来未被修改。

你可以使用受信任的证书颁发机构(CA)签发的证书,也可以创建用于内部用途的自签名证书。下面是创建自签名证书的示例:

      New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyCert" -CertStoreLocation Cert:\CurrentUser\My
      
Image

在证书存储区中找到该证书,并将其保存到一个变量中,以便稍后用于为文件签名:

      $cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object { $_.Subject -like '*MyCert*' }
      

然后使用 Set-AuthenticodeSignature 为你的脚本签名:

      Set-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1" -Certificate $cert
      

签名完成后,请使用以下命令验证签名:

      Get-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1"
      
Image

将数据转换为安全字符串

ConvertTo-SecureString 为密码或敏感数据创建安全字符串,并将其存储到文件中。例如,你可以使用此命令将纯文本密码转换为安全字符串:

      $securePsw = ConvertTo-SecureString "MyPassword123" -AsPlainText -Force
      

然后,你可以使用此 cmdlet 将安全字符串保存到文件中:

      $securePsw | ConvertFrom-SecureString | Out-File "D:\Office\Project\EncryptedPassword.txt"
      

用于 Windows 系统配置的 PowerShell

检索系统信息:Get-ComputerInfo、Get-Host、Get-WmiObject

Get-ComputerInfo

此 cmdlet 可检索有关计算机硬件、操作系统和配置的详细信息:

      Get-ComputerInfo
      
Image

要将输出限制为特定属性,请使用类似以下的 cmdlet:

      Get-ComputerInfo | Select-Object CsName, WindowsVersion, WindowsBuildLabEx, OsArchitecture
      
Image

你可以通过在 -Property 参数中使用通配符来检索信息,如下所示:

      Get-ComputerInfo -Property "OS*"
      
Image

Get-Host

此 cmdlet 会提供有关当前 PowerShell 主机环境的信息,这对于调试和其他用途非常有帮助:

      Get-Host
      

要检索特定属性,请使用类似以下命令之一:

      (Get-Host).Version(Get-Host).Name
      
Image

Get-WmiObject

Get-WmiObject 是一个用于查询 Windows 管理规范(WMI)对象的强大 cmdlet。它提供有关不同系统组件和服务的详细信息。

此 cmdlet 将检索操作系统(OS)信息:

      Get-WmiObject -Class Win32_OperatingSystem
      
Image

这个命令将检索 BIOS 信息:

      Get-WmiObject -Class Win32_BIOS
      
Image

要检索处理器信息,请使用此命令:

      Get-WmiObject -Class Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
      
Image

适用于 PowerShell 用户的实用小贴士

使用 Get-Help Get-Command 作为命令参考

Get-Help 命令非常适合用来查询其他命令的语法:

      Get-Help Get-Process
      
Image

Get-Command 可用于获取 PowerShell 命令、函数、别名、脚本和模块。它会显示它们的类型、名称、版本以及源详细信息。

      Get-Command Get-Process
      
Image

你可以使用通配符 (*) 根据部分名称来探索命令。例如,以下是查看名称中包含 Service 的所有 cmdlet 和函数的方法:

      Get-Command *Service*
      
Image

探索对象属性Get-Member

Get-Member 命令主要用于通过探索对象的属性和方法来理解对象的结构和功能。例如,下面的命令将列出 Get-Date 命令的所有属性:

      Get-Date | Get-Member -MemberType property
      
Image

为提高效率创建自定义别名和函数

你可以创建新的别名和函数,以便更轻松地使用 PowerShell 并自动化频繁的任务。例如,下面的命令将创建别名 p(指向 Get-process 命令):

      New-Alias -Name p -Value Get-Process
      
Image

函数允许你将多个命令打包到一个可重复使用的代码块中。下面的脚本会创建一个简单的函数,用于列出并统计目录中的文件数量:

      function ListAndCountFiles {    param (        [string]$directory    )    Get-ChildItem -Path $directory    $fileCount = (Get-ChildItem -Path $directory).Count    Write-Host "Total files in $($directory): $fileCount"}
      

要在以后使用该函数,只需使用下面这个命令:

      ListAndCountFiles -directory "C:\Temp"
      
Image

结论

通过动手实践来掌握 PowerShell 至关重要。要开始学习,请使用 Get-Help 了解其他 cmdlet 的详细信息,使用 Get-ChildItemSet-Location, 浏览你的文件系统,并使用 Get-ComputerInfoGet-HostGet-WmiObject 获取系统信息。接着再进行更高级的任务,例如处理数据、为脚本签名、启动和停止服务,以及管理对象。如果你需要远程管理主机,请务必查看有关远程执行策略和会话的资料。

请务必下载或收藏此博客,以便快速查看你需要的 cmdlet,从而有效使用 PowerShell。

Netwrix Directory Manager

常见问题

有多少条 PowerShell 命令?

可用的 PowerShell 命令数量取决于 PowerShell 的版本以及你已安装的模块。要获取命令总数,请使用以下命令:

      Get-Command | Measure-Object
      

PowerShell 中使用了哪些命令?

PowerShell 命令提供了广泛的功能,例如数据处理、文件和文件夹管理以及系统管理。以下是一些重要的命令:Get-Help, Get-ChildItem, Set-Location, Get-ProcessExport-Csv

如何获取 PowerShell 命令列表?

要查看所有可用命令,请运行以下 cmdlet:

      Get-Command
      

使用 PowerShell 你还能做哪些很酷的事情?

PowerShell 使用户能够自动化重复性任务、远程管理服务器、与 Web 服务和 API 协作、分析系统资源,并管理云资源。

如何使用 Windows PowerShell?

要从 Windows 开始菜单启动 PowerShell,只需输入命令 PowerShell

什么是 PowerShell 以及基本命令?

PowerShell 是一种命令行外壳和脚本语言。 一些基本命令包括:

  • Get-Help
  • Get-Service
  • Set-location
  • New-Item

PowerShell 入门:适合新手的是什么?

PowerShell对初学者来说也可能很有趣。它的“动词-名词”结构易于使用。有了投入和像这样的博客工具,就可以轻松掌握基础任务,并在几周内成为中级或高级实践者。

分享到

了解更多

关于作者

Asset Not Found

Jonathan Blackwell

软件开发负责人

自 2012 年以来,工程师兼创新者 Jonathan Blackwell 一直提供工程领导力,使 Netwrix GroupID 成为 Active Directory 和 Azure AD 环境中群组与用户管理领域的领先者。他在研发、市场与销售方面的经验,使 Jonathan 能够全面理解 Identity 市场以及买家如何思考。