我最常用的 Windows PowerShell 命令及其优点

我最常用的 Windows PowerShell 命令及其优点

PowerShell 被广泛认为是专注于脚本编写和自动化的 IT 管理员的必备工具。然而,其强大的功能远不止于 IT 领域,对于任何正在处理杂乱无章的文件和目录的人来说,它都弥足珍贵。就我个人而言,我使用 PowerShell 命令来筛选过时的代码、构建客户端文件,并缓解数月快节奏、截止日期驱动的项目所积累的混乱。

作为强大的命令行 Shell 和脚本平台,PowerShell 简化了各种任务。尽管早期版本的 Windows 提供了独立的 PowerShell 应用程序,但由于其多功能性和现代化的界面,现在用户更喜欢使用 Windows 终端来执行 Shell 环境(包括 PowerShell 和命令提示符)。

所有命令均可在专用 PowerShell 应用程序和 Windows 终端中执行。要开始使用它们,只需在 Windows 终端中打开 PowerShell 选项卡即可。

1.获取帮助

在 PowerShell 中获取帮助命令

当我第一次通过 YouTube 教程探索 PowerShell 时,用户经常强调的一个命令是Get-Help。此命令作为入门资源,允许您访问有关任何 PowerShell cmdlet 的详细信息及其语法、参数和使用示例。

要检索有关命令的特定信息,请输入:

Get-Help Get-Process

这将显示命令的概要、语法详细信息和输入参数。有关更多信息,请附加-Examples参数:

Get-Help Get-Process -Examples

此外,您可以使用-Online开关参考 Microsoft 的官方文档:

Get-Help Get-Process -Online

此命令将引导您到 Microsoft 网站以获取全面的命令文档。

2.获取命令

在 PowerShell 中获取命令命令

Get-Help专注于提供有关 cmdlet 的信息,而Get-Command则对于查找并列出所有可用命令至关重要。如果您知道要执行的功能,但记不起命令名称,只需使用 Get-Command 根据部分名称或模式搜索命令即可。

例如,要查找包含单词process的所有命令,请输入:

Get-Command *process*

此命令显示名称中包含“process”的所有命令。您可以根据命令类型进一步优化搜索,例如,如果您只想要 cmdlet:

Get-Command -Name Get* -CommandType Cmdlet

此外,对于特定于模块的搜索,例如与网络相关的搜索:

Get-Command -Module NetTCPIP

使用Get-Command比在网上搜索命令名称要高效得多。

3.测试网络连接

Test-NetConnection 命令 PowerShell

您是否经常在 ping、telnet 和 traceroute 等各种工具之间切换?Test-NetConnection cmdlet 将这些功能整合为一个。此 cmdlet 对于网络故障排除至关重要,因为它可以帮助诊断问题是源于您的网络、服务器还是其他来源。

要确定某个网站是否可访问,请执行:

Test-NetConnection makeuseof.com

此命令提供 ping 结果和基本连接信息。要测试特定端口,请将端口号合并到命令中:

Test-NetConnection server.company.com -Port 443

如需详细的网络路径跟踪,请使用-TraceRoute参数:

Test-NetConnection 8.8.8.8 -TraceRoute

此命令将测试数据包发送到 8.8.8.8,同时跟踪您的计算机和目的地之间的跳数,帮助您查明任何连接问题。

4.获取子项

Get-ChildItem PowerShell 命令

Get -ChildItem cmdlet 可让你查看任何指定目录中的文件和文件夹。例如,要列出 Documents 文件夹中的内容,只需输入:

Get-ChildItem C:\Users\Username\Documents

要识别上周修改的 PDF 文件,请使用以下命令:

Get-ChildItem C:\Users\YourName\Documents -Filter *.pdf | Where-Object {$_. LastWriteTime -gt (Get-Date).AddDays(-7)}

-Recurse参数允许您搜索所有子文件夹。如果您要查找 Projects 文件夹及其子目录中的所有日志文件,请执行以下操作:

Get-ChildItem C:\Projects -Recurse -Filter *.log

如果磁盘空间不足,您可以识别超过 1GB 的大文件:

Get-ChildItem C:\ -Recurse -File | Where-Object {$_. Length -gt 1GB} | Select-Object FullName, @{Name="SizeGB";Expression={$_. Length/1GB}}

Get-ChildItem cmdlet是自动执行批处理任务、文件组织和审计的强大助手。

5.Where-Object

PowerShell 中的 Where-Object 命令

在前面的示例中,Where-Object的使用突出了其根据特定属性条件过滤数据的功能——其操作方式类似于编程中的条件语句。花括号内的语法允许表示每个被求值的项目。

要可视化所有正在运行的服务,请输入以下内容:

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

如果您对消耗超过 100MB 内存的进程感兴趣,请尝试:

Get-Process | Where-Object {$_. WorkingSet -gt 100MB}

也可以组合多个条件。例如,要查找上个月内修改过的大型 Word 文档:

Get-ChildItem -Filter *.docx | Where-Object {$_. Length -gt 5MB -and $_. LastWriteTime -gt (Get-Date).AddMonths(-1)}

将复杂条件组织到多行以增强脚本的可读性:

Get-ChildItem | Where-Object { $_. Length -gt 1MB -and $_. Extension -eq ".log"}

6.选择对象

PowerShell 中的 Select-Object 命令

命令的输出通常比实际需要的要多。Select -Object cmdlet 允许您仅筛选相关数据,然后可以使用Export-Csv cmdlet 将这些数据导出到 CSV 文件。例如,如果您只想查看服务的名称和状态:

Get-Service | Select-Object Name, Status

如果您的目标是找出消耗 CPU 最多的前五个进程,请执行:

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU

此外,您还可以创建计算属性。要以兆字节(而非字节)显示文件大小,请执行以下操作:

Get-ChildItem | Select-Object Name, @{Name="SizeMB";Expression={$_. Length/1MB}}

要提取单个属性值,请使用-ExpandProperty参数:

Get-Process notepad | Select-Object -ExpandProperty Id

此命令仅产生进程 ID,这在通过管道传输到需要单个值的其他命令时特别有用。

7.获取会员

PowerShell 中的 Get-Member 命令

PowerShell 主要通过对象进行操作,Get-Member cmdlet 会显示其关联的属性和方法。例如,在检索有关进程的信息时,您可以检查其大小、创建日期和其他指标。使用以下命令查看进程对象内的属性:

Get-Process | Get-Member

这将列出 CPU、Id 和 WorkingSet 等属性,以及 Kill() 和 Refresh() 等方法。如果您只想查看属性,可以指定:

Get-Process | Get-Member -MemberType Property

对于文件相关操作:

Get-ChildItem C:\temp\test.txt | Get-Member

这会显示诸如 Length 和 LastWriteTime 之类的详细信息,以及 Delete() 和 MoveTo() 等方法。您可以使用 Length 按大小筛选文件,或根据 LastWriteTime 识别最近修改的文件。

8.设置剪贴板和获取剪贴板

PowerShell 中的 Set-Clipboard 命令

如果您发现 PowerShell 输出内容繁多,需要复制,手动选择可能会很麻烦。但是,Set-ClipboardGet-Clipboard可以大大简化这一过程。

要将命令结果复制到剪贴板,请输入:

Get-Process | Select-Object Name, CPU | Set-Clipboard

这样,您可以轻松地将结果粘贴到 Excel 或任何文本编辑器中。相反,要将剪贴板内容检索回 PowerShell,只需运行:

$text = Get-Clipboard

此功能在处理列表时特别有用。例如,您可以从 Excel 中复制一系列计算机名称,然后执行:

Get-Clipboard | ForEach-Object { Test-NetConnection $_ }

此命令测试与列出的每个计算机名称的连接。PowerShell 与其他应用程序之间的无缝集成显著加快了重复性任务的执行速度。

9.外网格视图

PowerShell 中的 Out-GridView 命令

有时需要对结果进行交互式排序和筛选。Out -GridView cmdlet 会打开一个单独的窗口,其中包含可排序和可搜索的表格格式。

Get-Process | Out-GridView

此操作将启动一个新窗口,显示网格界面中当前进程的列表。点击列标题进行排序,或在搜索栏中按关键字筛选。要从网格中选择项目并将其传递给其他命令,请使用:

Get-Service | Out-GridView -PassThru | Restart-Service

使用-PassThru参数,您可以选择多行并执行操作,例如仅重新启动那些选定的服务。

对于日志分析,您还可以应用:

Get-EventLog -LogName Application -Newest 1000 | Out-GridView

这允许通过关键字输入快速过滤事件、按时间排序并显示数据集内的模式。

10.获取进程

Get-Process explorer PowerShell 命令

Get -Process cmdlet 显示计算机上当前正在运行的所有应用程序,并提供有关其内存使用情况、CPU 时间和进程 ID 的见解。

要列出所有当前活动的进程,请执行:

Get-Process

如果您要搜索特定的应用程序(例如 Google Chrome),只需指定:

Get-Process chrome

如果需要终止无响应的程序,可以按如下方式链接命令:

Get-Process notepad | Stop-Process

要识别消耗大量内存资源的进程,请执行:

Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

当您的系统性能下降时,此命令会提供占用大量内存的程序的快速概览。

来源和图片

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注