当前位置: 首页 > 教程资源 > Windows 教程 > 正文
什么是 PowerShell 命令?掌握 PowerShell 40 条核心命令

什么是 PowerShell 命令?掌握 PowerShell 40 条核心命令

作者:大眼仔~旭 日期:2周前 (11-24) 评论:0 条

摘要:通过合理运用 PowerShell 命令,您可以高效且精确地管理您的系统资源。PowerShell 是一个强大的自动化工具和脚本环境,自 Windows 7 开始即作为标准组件预装在所有版本的 Windows 操作系统中。它不仅提供了对传统命令行界面(cmd)命令的支持,还引入了丰富的、专为管理 Windows 系统设…

通过合理运用 PowerShell 命令,您可以高效且精确地管理您的系统资源。PowerShell 是一个强大的自动化工具和脚本环境,自 Windows 7 开始即作为标准组件预装在所有版本的 Windows 操作系统中。它不仅提供了对传统命令行界面(cmd)命令的支持,还引入了丰富的、专为管理 Windows 系统设计的命令集 – cmdlet。这些 cmdlet 遵循一种命名约定,即由动词-名词的组合形式构成,使得命令易于记忆和理解。此外,用户可以通过添加可选参数来进一步定制每个命令的行为,从而满足特定的需求。

Windows PowerShell

Windows PowerShell

什么是 PowerShell 命令?

PowerShell 命令是用于指示 PowerShell 执行特定操作的指令。这些命令可以是简单的操作,如文件浏览,也可以是复杂的任务,如服务管理和注册表编辑。与传统的命令行工具相比,PowerShell 提供了一个更加丰富和灵活的命令集。每个 cmdlet 都旨在完成一项具体的功能,并且可以与其他 cmdlet 结合使用,以实现复杂的工作流程。这使得 PowerShell 成为了系统管理员、IT 专业人员乃至开发者的强大工具。

最重要的 PowerShell 命令概览

对于刚开始接触 PowerShell 的用户来说,了解一些核心命令是非常有帮助的。下面列出了几类重要的 PowerShell 命令,它们覆盖了从基础的系统信息查询到高级的服务管理等多个方面:

1. Get-Module -All

要获取所有导入的 PowerShell 模块的初步概览,请使用命令 Get-Module -All。

1
Get-Module -All

2. Get-Command

有大量预定义的 PowerShell 命令。要获取当前可用的 PowerShell 命令的概览,只需使用 Get-Command 命令。此命令将整齐地列出所有可能的操作,并为每个相应的 cmdlet 提供简明说明。即使您安装了其他模块,这也适用。

1
Get-Command

3. Get-Help

上面描述的 Get-Command 列表提供了初步概览;要了解有关命令及其选项的更多详细信息,请使用 Get-Help cmdlet。此命令访问您 PC 上的帮助文件,然后提供所有可用信息。要激活它,请将 Get-Help 与要查看其语法的命令结合使用。

1
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]

4. Get-Process

要快速检查系统上当前活动的应用程序、程序和进程列表,可以使用 Get-Process 命令。如果指定特定应用程序,您将收到有关该特定应用程序的其他信息。

1
Get-Process

5. Get-Service

Get-Service 命令的功能与 Get-Process cmdlet 类似。但是,它通过提供有关所有活动服务的信息而与众不同。如果您希望获取有关特定服务或特定类别服务的信息,您可以轻松指定您的请求。

1
Get-Service

6. Stop-Process

您还可以使用各种 PowerShell 命令通过 shell 停止进程。其中一个选项是 Stop-Process 命令。您可以通过名称、ID 或其他属性定义相应的进程。以下是示例:

1
Stop-Process -Name "processname"
1
Stop-Process -Id 3582 -Confirm -PassThru

使用 -Confirm 请求确认命令。-PassThru 命令请求确认已停止的进程。这不是自动完成的。

7. ConvertTo-HTML

为了快速识别问题或潜在的并发症,清晰的显示非常有益。您可以通过使用 ConvertTo-HTML 命令来实现这一点,该命令将 PowerShell 命令的输出转换为 HTML 文件。这以用户友好的列格式呈现信息。命令结构通常如下所示:

1
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html

8. ConvertTo-Xml

如果您需要特定对象的基于 XML 的表示,则可以采用类似的方式进行。您可以使用 ConvertTo-Xml 命令执行此操作。在以下示例中,您将当前日期转换为 XML 格式:

1
Get-Date | ConvertTo-Xml

9. Where-Object

您可以使用 Where-Object 命令过滤 cmdlet 的结果。执行命令时,您经常会收到包含比您需要的更多信息的大量对象。通过将 Where-Object 与管道结合使用,您可以仅显示您正在寻找的特定信息。例如,如果您想查看今年创建或更新的服务,您可以按如下方式进行:

1
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }

10. Get-History

要列出您在会话期间输入的所有 PowerShell 命令,Get-History 是正确的 cmdlet。要列出所有 PowerShell 命令:

1
Get-History

使用此规范,您只能调用最后十个 PowerShell 命令:

1
Get-History -Count 10

11. Clear-History

您还可以删除使用的 PowerShell 命令列表。要删除所有条目,请使用 cmdlet Clear-History:

1
Clear-History

要删除选定的 PowerShell 命令,只需添加相应的参数。以下输入将删除所有包含“Help”或以“Syntax”结尾的 PowerShell 命令。

1
Clear-History -Command *Help*, *Syntax

12. Add-History

还可以将 PowerShell 命令添加到会话中。这样,您以后就可以再次调用它们。相应的 cmdlet 是 Add-History。

1
Add-History

13. Out-File

要将 PowerShell 命令的输出保存在您的计算机上,请使用 Out-File cmdlet。这会将 PowerShell 命令存储在指定路径下的原始文本文件中。

1
Get-Process | Out-File -FilePath .\Process.txt

14. Copy-Item

在 PowerShell 中,您还可以复制元素并将副本保存在其他位置。使用 Copy-Item 命令并指定要保存副本的目录。其工作原理如下:

1
Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"

15. Get-ChildItem

您可以使用 Get-ChildItem 命令从一个或多个存储位置获取项目。如果有子元素,它们也会显示出来。此命令默认列出属性、上次更改的时间戳、文件大小和元素名称。如果存储位置为空,则省略输出。

1
Get-ChildItem -Path C:\example

属性显示在“Mode”行下方。以下属性很常见:

a(存档)
d(目录)
h(隐藏)
l(链接)
r(只读)
s(系统)

16. Set-AuthenticodeSignature

要保护您的文件,您可以使用 Set-AuthenticodeSignature 命令为它们配备 Authenticode 签名。但是,这仅适用于支持主题接口包 (SIP) 的文件。

1
2
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert

17. Invoke-Item

要执行与特定文件相关的标准操作,Invoke-Item 提供了最简单的方法。例如,此命令可确保直接执行可执行文件或在默认应用程序中打开文档文件。在此示例中,默认情况下在 Microsoft Word 中打开该文件:

1
Invoke-Item "C:\Test\example.doc"

18. Start-Job

要启动本地计算机上的后台作业,您可以使用适当的命令来实现此目的。Start-Job 允许您在后台执行特定命令,而无需与当前会话交互。

1
Start-Job -ScriptBlock { Get-Process -Name pwsh }

使用这些 PowerShell 命令执行操作

虽然早期的 PowerShell 命令主要侧重于提供概述,但您也可以使用适当的 cmdlet 执行各种操作,从而提高系统的生产力。以下 PowerShell 命令简化了您的工作流程。

19. Clear-Content

要删除元素的内容同时保留元素本身,Clear-Content 命令是理想的选择。它的一个使用示例是清除文档中的文本,同时保持实际文件完好无损。该过程执行如下:

1
Clear-Content C:\Temp\example.txt

20. ForEach-Object

ForEach-Object 命令允许您对输入对象集合中的所有元素执行操作。在此示例中,我们将数组中的三个整数除以 10:

1
2
3
4
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10

21. Compare-Object

为了避免手动比较不同的对象集,您可以使用 Compare-Object cmdlet。此命令会生成一份报告,突出显示记录之间的区别。第一条记录用作参考对象,第二条记录用作差异对象。您可以指定要比较的因素,如果省略此信息,则只会比较字符串结果。输出分为仅出现在参考对象中的属性 (<==) 和仅出现在差异对象中的属性 (==>)。在此示例中,document1.txt 包含值 Berlin、London 和 Paris。Document2.txt 包含 Berlin、Vienna 和 Amsterdam。

1
2
3
4
5
6
7
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Document1.txt) -DifferenceObject (Get-Content -Path C:\Test\Document2.txt)
InputObject SideIndicator
----------- -----------------
Wien ==>
Amsterdam ==>
London <==
Paris <==

默认情况下,不会显示出现在两个文档中的内容(在本例中为“Berlin”)。

22. New-Object

最有用的 PowerShell 命令之一是 New-Object。您可以使用此 cmdlet 从 .NET 框架或组件对象模型 (COM) 实例化对象。例如,如果您打算创建一个以“1.2.3.4”作为构造函数字符串的 System.Version 对象,则命令的执行方式如下:

1
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"

23. Select-Object

使用 Select-Object 命令选择具有您定义的属性的对象或对象组。您可以为此指定的参数如下:

1
2
3
4
5
First
Last
Unique
Skip
Index

在下面的示例中,我们使用 PowerShell 命令 Get-Process 和 Sort-Object 显示输入时内存消耗最高的三个进程。

1
Get-Process | Sort-Object -Property WS | Select-Object -Last 3

24. Set-Alias

Windows 快捷方式有助于更快地执行操作。PowerShell 也提供此选项。您可以使用 Set-Alias cmdlet 为不同的 PowerShell 命令定义快捷方式。在下面的示例中,我们为当前会话的 Get-ChildItem 命令创建别名“ci”。

1
2
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci

25. Set-Location

要更改工作内存位置,请使用 Set-Location 命令。可能的新位置是目录、子目录、注册表位置或提供程序路径。在以下示例中,我们将 C: 驱动器指定为当前存储位置:

1
2
3
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>

26. Set-Service

您可以使用 Set-Service cmdlet 与服务交互并启动、停止或暂停服务。还可以更改服务的属性。在以下示例中,我们将服务的显示名称从“新工作站”更改为“旧工作站”。

1
Set-Service -Name New Workstation -DisplayName "Old Workstation"

27. Set-TimeZone

要更改系统的时区,Set-TimeZone 命令是正确的选择。要将协调世界时设置为新系统时间,请使用以下命令:

1
Set-TimeZone -Id "UTC"

28. Restart-Computer

您可以使用名为 Restart-Computer 的适当 PowerShell 命令重新启动本地计算机或远程计算机上的操作系统。执行方式如下:

对于本地计算机:

1
Restart-Computer

对于网络中的选定计算机:

1
Restart-Computer -ComputerName Server01, Server03

29. Restart-Service

要使用 PowerShell 命令停止和重新启动服务,Restart-Service 是适当的 cmdlet。例如,您可以重新启动所有以“Net”开头的服务:

1
PS C:\> Restart-Service -DisplayName "net*"

30. Clear-RecycleBin

应定期清空回收站,这也可以通过 PowerShell 实现。命令为 Clear-RecycleBin。

1
Clear-RecycleBin

31. Get-ComputerInfo

Get-ComputerInfo 命令用于检索系统和操作系统属性。

1
Get-ComputerInfo

32. Move-Item

当您需要将项目从一个位置重新定位到另一个位置时,您可以使用多个 PowerShell 命令。不过,最常用的选项是 Move-Item。在此示例中,我们将 old.txt 文件从 C: 驱动器移动到 D:\Temp 目录,同时将其重命名为 new.txt。

1
Move-Item -Path C:\old.txt -Destination D:\Temp\new.txt

使用适当的 PowerShell 命令进行监控和调试

启用系统监控和检查的 PowerShell 命令非常有价值,尤其是在实际条件下测试新网络的性能时。以下 PowerShell 命令对于这些目的特别有用。

33. Debug-Process

调试是一个重要的过程,可确保所有设置和过程无错误运行。为此,您需要下载并配置适当的调试器。完成后,使用 Debug-Process 命令。在以下示例中,我们使用 Explorer 的调试器:

1
PS C:\> Debug-Process -Name "Explorer"

要同时调试多个进程,只需使用逗号将它们细分即可。

34. Enable-PSBreakpoint

要激活某些断点,请使用 Enable-PSBreakpoint 命令。从技术角度来看,这会将 cmdlet 的值设置为“true”。使用这些 PowerShell 命令激活当前会话中的所有断点:

1
Get-PSBreakpoint | Enable-PSBreakpoint

使用此命令使用其 ID 激活断点:

1
Enable-PSBreakpoint -ID 0, 3, 4

35. Disable-PSBreakpoint

要再次停用 PowerShell 断点,适合此目的的 cmdlet 是 Disable-PSBreakpoint。从技术上讲,Enable-PSBreakpoint 命令的值设置为“false”。要停用 ID 为 0 的断点,请输入以下内容:

1
Disable-PSBreakpoint -Id 0

36. Get-Counter

对于 Windows 设备,您可以使用 PowerShell 检索其性能数据。适合此任务的命令是 Get-Counter,它既可用于本地计算机,也可用于远程计算机。在以下示例中,我们从本地计算机检索数据:

1
Get-Counter -ListSet *

37. Start-Sleep

暂停脚本或会话可能至关重要,尤其是在系统过载的情况下。PowerShell 为此提供了 Start-Sleep 命令,允许您指定应暂停活动的持续时间。在以下示例中,执行暂停两秒钟:

1
Start-Sleep -Seconds 2

38. Test-Path

使用 Test-Path 命令检查特定路径的所有元素是否存在。可能的结果是“True”或“False”。

1
2
Test-Path -Path "C:\Documents and Settings\user"
False

39. Test-Connection

您还可以使用 PowerShell 评估网络内的网络连接。这是通过 Test-Connection 命令向指定收件人发送 ICMP 回显请求数据包来实现的,该命令通过 Internet 控制消息协议 (ICMP) 请求响应。在我们的示例中,我们通过 IPv6 协议向 Server02 发送请求。

1
Test-Connection -TargetName Server02 -IPv6

40. Get-WinEvent

当您需要查看一个或多个事件日志时,您可以使用各种 PowerShell 命令。用于此目的的最实用的 cmdlet 是 Get-WinEvent。要从本地计算机检索所有日志,您可以使用以下命令:

1
Get-WinEvent -ListLog *

掌握这些基础命令将极大地提升您在日常工作中处理各种任务的能力。随着经验的积累,您还可以探索更多高级功能,如使用 PowerShell 编写脚本来自动执行重复性任务,进一步提高工作效率。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《什么是 PowerShell 命令?掌握 PowerShell 40 条核心命令
文章固定链接:https://www.dayanzai.me/powershell-commands.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部