[玩转系统] 用于故障排除的 10 个最佳 PowerShell 命令
作者:精品下载站 日期:2024-12-14 08:09:48 浏览:16 分类:玩电脑
用于故障排除的 10 个最佳 PowerShell 命令
让我首先介绍一下我自己的背景,因为我希望这将有助于为这篇文章提供背景和合法性。我有软件开发人员的背景,在 1980 年编写了我的第一个代码,但在 1995 年,我开始接触 Citrix 公司的产品,并且我一直在解决这些产品的问题,或者更准确地说,主要是解决在从那时起,他们就一直是最重要的。
这曾经是一项繁琐、无聊且容易出错的手动操作,因此作为一个天生懒惰的人,我一直在尝试通过使用 PowerShell 在可能且实用的情况下简化、加速和自动化故障排除。
本文分享了我在该领域的一些成功经验,希望能鼓励您成为更高效的故障排除者,以便您有更多时间用于有趣的事情(尽管对我个人而言,这通常是更多的故障排除或 PowerShell 开发) !
下面,我列出了我认为最有用且最常用的用于故障排除的 PowerShell 命令列表。
获取 CimInstance
WMI 或 CIM(发音为“See Eye Em”)作为 PowerShell cmdlet 在版本 3.0 中的演变,是一种很棒但简单且通用的方法,用于从一台或多台计算机获取有关各种事物的信息。
例如,您可以获得有关进程、服务、磁盘、网络、内存、处理器、电池等的详细信息。此外,一些公司(例如 Citrix)添加了自己的 WMI 提供程序,以允许访问否则无法访问的信息。需要专有 API 或可执行文件来检索。
例如,此命令将获取操作系统详细信息以及安装和上次启动时间(图 1):
Get-CimInstance -ClassName win32_operatingsystem -ComputerName grl-dc03,grl-sql01,grl-sql03 | select PSComputerName,caption,version,installdate,LastBootUpTime | Format-Table -AutoSize
图。 1:Get-CimInstance 命令提供有关操作系统的输出信息,这些信息以表格形式显示
我的许多咨询工作包括对各种组件进行健康检查。我收集有关我正在检查的桌面和服务器的大量信息(当我不在现场或无法访问客户系统时可以使用这些信息)的方法是使用我编写的脚本,该脚本可查询近 50 个 CIM 类在命令行或通过文本文件指定的计算机列表。您可以从我的 GitHub 存储库免费下载该脚本。
该脚本将结果写入 csv 文件,以便轻松比较不同机器的结果,例如检查一致性并帮助发现异常情况。
赢奖活动
在排除登录缓慢等问题时,Windows 事件日志中可能包含非常有用的信息。
但知道在哪里查找可能会出现问题,因为在最新的操作系统上,有超过 300 个不同的活动事件日志,其中可能隐藏着关键信息,而不仅仅是像过去那样隐藏在系统或应用程序事件日志中。
使用PowerShell,我们可以轻松搜索特定事件
- 通过 ID
- 在一定的时间范围内
- 包含特定文本或
- 上述的组合
这比手动运行事件查看器和搜索大量事件更容易、更快速且可扩展。
例如,下面是使用哈希表参数(也称为字典)从远程域控制器(包括导致锁定的计算机)检索过去 12 小时内的帐户锁定事件的示例(图2和图3):
Get-WinEvent -ComputerName grl-dc03 -FilterHashtable @{LogName = 'Security';Id = 4740;StartTime = (Get-Date).AddHours( -12) } -ErrorAction SilentlyContinue | Select TimeCreated,@{n='User';e={$_.Properties[0].value}},@{n='From';e={$_.Properties[1].Value}}
图。 2:Get-WinEvent 命令从远程域控制器提供有关过去 12 小时内帐户锁定事件的输出信息,这些信息以表格形式显示
图。 3:Windows 事件属性的屏幕截图
请注意在命令中我们如何使用 Get-WinEvent 返回的“Properties”数组来提取特定字段,这样我们就不必解析事件日志条目的全文(图 4)。
图 4:文中描述的 Get-WinEvent 命令仅选择 EventData 集的第一个 [0] 和第二个 [1] 字段
同样,我几乎每天都会使用一个脚本来检索给定时间段内所有启用的事件日志中的所有事件(例如用户登录),以查找错误或性能缓慢的线索/原因。您可以从我的 GitHub 存储库下载它。
输入-PSSession
考虑这样一种情况:特定计算机上的用户抱怨性能不佳,但当您尝试使用 mstsc 或类似工具远程连接到该计算机时,您的登录会挂起。
如果有一种低开销的方法远程连接到该设备以进行交互式或自动故障排除,就像使用 telnet 或 ssh 到 *nix 机器一样(例如使用出色的免费工具 PuTTY),这不是很好吗?
输入 PowerShell 命令 Enter-PSSession 会在远程计算机上提供一个命令行界面,也就是说,如果通过 GPO 启用 PowerShell 远程处理或通过“winrm Quickconfig”或“Enable-PSRemoting -Force”手动启用Enable-PSRemoting -Force.
这允许进行故障排除和补救,例如通过Get-Process(别名ps)查找CPU或内存的最高消耗者,并在适当的情况下通过Stop-Process终止它们(别名杀死)。
测试网连接
如何测试特定的 Web 服务器是否已启动并正在运行?平?不! Ping 仅测试是否启用了 ICMP 回复,如果不使用 IP 地址则间接测试名称解析 - 它不会确认是否有进程正在侦听远程计算机上的特定端口并且防火墙是否允许连接。
在 PowerShell 出现之前,我会使用 telnet.exe 进行此端口测试,但现在 PowerShell 提供了 Test-NetConnection 命令(别名 tnc),该命令允许检查计算机上的特定端口(以及路由跟踪) ),如图5所示:
Test-NetConnection -ComputerName grl-dc03 -Port 443 -InformationLevel Quiet
图。 5:Test-NetConnection可用于查询机器上特定端口的信息
此外,因为它返回一个 PowerShell 对象或一个布尔值,所以很容易合并到脚本中,而无需解析 ping.exe 之类的命令输出,而在过去的糟糕日子里,我们必须这样做。
获取 ADUser
这是此列表中比较奇怪的一个,因为默认情况下它不可用:必须安装 ActiveDirectory PowerShell 模块,尽管通过“Add-WindowsFeature RSAT-AD-PowerShell”非常简单命令(提升运行)。
许多供应商都有 PowerShell 模块,允许您连接和自动化他们的技术 - 例如,我每天都使用 VMware 和 Citrix 的模块。
Get-ADUser 和相关的 cmdlet,例如Get-ADGroupMember,允许我们检查和更改 AD 信息,对于查询大量对象并生成报告(请参阅稍后的导出 CSV)。
下面是一个计算有多少帐户的主驱动器设置为“H:”的示例,如果我们执行一些维护,我们可能需要它 - 我们可以同样轻松地更改主驱动器(图 6):
Get-ADUser -Filter "HomeDrive -eq 'H:'" | Measure-Object
图。 6:Get-ADUser 可用于轻松检索 Active Directory 中的用户信息
我还发现它在客户系统上非常有用,他们没有授予我访问 AD 用户和计算机的权限,但我需要检查用户的属性,例如组成员资格。
获取进程
我们经常需要检查关键进程是否正在运行或调查我们无法识别的进程。虽然任务管理器和 SysInternals Process Explorer 都是有用的工具,但我们可以使用 Get-Process(别名 ps)cmdlet 检查并修复许多问题。
下面是一个示例,显示了从名称中包含“Citrix”的文件夹运行的所有进程,按该进程的启动时间升序排序,这使我们能够确定该进程是否在启动、用户登录等时启动。(图7):
Get-process | Where Path -match 'Citrix' | Select Name,Id,StartTime,Path | Sort StartTime | Format-Table -AutoSize
图。 7:Get-Process 可用于过滤名称中包含“Citrix”的进程并显示有关它们的特定信息
下面是一个类似的命令,它在所有正在运行的进程的 .exe 文件的版本资源中查找公司名称中的“VMware”(图 8 和 9):
Get-Process | Get-itemProperty -EA Silent | Select -ExpandProperty VersionInfo | Where CompanyName -match 'VMware' | Select FileVersion,ProductName,FileName
图。 8:Get-Process 可用于过滤公司名称中包含“VMware”的进程并显示有关它们的特定信息
图。 9:公司名称通常可以在.exe文件的属性详细信息中的“版权”条目中找到
获取子项目
很可能您实际上已经在没有意识到的情况下使用了此命令,特别是如果您来自命令提示符,如果您一直在 PowerShell 提示符中使用“dir ”,因为这是 Get-ChildItem 的别名.
顾名思义,如果我们指定父项的 -recurse,Get-ChildItem 会为我们提供有关子项及其子项的信息,其中父项可能是本地或远程文件系统文件夹、注册表项、证书存储等(提示:运行Get-PSDrive以查看哪些 PowerShell 驱动器可用)。
下面的示例显示了给定文件夹和子文件夹中的详细信息,包括 -force 启用的任何隐藏文件夹和子文件夹,对于大小超过 100MB 的任何文件,按大小降序排序。
Get-ChildItem -Force -Recurse -File | Where Length -gt 100MB | Sort Length -Descending | Select fullname, CreationTime, @{n='Size (MB)'; e={[math]::Round($_.Length / 1MB , 2)}}}
图。 10:检索给定文件夹中的详细信息以及大小超过 100MB 的任何文件的子文件,并使用 Get-ChildItem 命令按大小降序排序
得到帮助
这个与我迄今为止介绍的其他模块略有不同,因为它并不直接帮助进行故障排除,但它为我们提供的是详细的帮助,例如 cmdlet 的用法、参数和示例,涵盖内置模块和您随后使用的模块安装。
再结合 Get-Command 查看特定模块提供的命令或与网络、驱动器等相关的命令,可以快速使用不熟悉的命令,而无需求助于自己喜欢的网络搜索引擎。
我通常将它与 -ShowWindow 一起使用,以在单独的文本窗口中显示帮助,而 -Online 对于转到包含最新信息的网页很有用,该网页有时还包含额外的信息信息和相关项目的链接。
请记住,您可以通过 Tab 键浏览可用参数或使用 ctrl 空格键来显示所有参数,并且像我这样的脚本作者会将所需的注释添加到我们的脚本中,以便 Get-Help 也可以使用它们。
网格视图
Windows PowerShell 中的此 cmdlet 允许 PowerShell cmdlet、函数或脚本输出的对象数据轻松呈现在屏幕网格视图中,然后可以对网格视图进行排序和筛选,无需安装除 PowerShell(和 .NET)之外的任何软件。
它甚至可以返回选定的项目以在脚本中进一步使用,例如从列表中选择一个项目,或者只是发送到剪贴板(通过 -passthru 参数)。
这是我经常使用的一行代码,用于将今天的 IIS 日志文件放入网格视图中,以便我可以查找错误、响应时间缓慢等情况:
Get-Content -Path "C:\inetpub\logs\logfiles\w3svc3$(Get-Date -Format 'u_exyyMMdd.lo\g')"|Where-Object { $_ -match '^(\d|#Fields)' } | ForEach-Object { $_ -replace '^#Fields: ' } |ConvertFrom-Csv -Delimiter ' '|Where-Object cs-uri-stem -NotMatch 'monitor.aspx$' |Select-Object -Property *,@{name='Duration';expression={([int]$_.'time-taken')}} |Out-GridView
图。 11:Out-GridView 命令可让您在清晰的网格中格式化使用 PowerShell 查询的数据
图 12 显示了当我单击网格视图中的“确定”按钮时我选择的一行,该行已通过 Set-Clipboard(别名 scb)放入剪贴板中,因此可以将其粘贴到我的故障排除/运行状况检查注释中(做什么)你的意思是,你仍然使用笔和纸!)。
图。 12:前面提到的命令的输出。
导出-CSV
最后但并非最不重要的一点是,Export-CSV 是一个内置 cmdlet,允许我们编写任何 PowerShell 对象,例如之前提供的 cmdlet(如 Get-Process)的输出,转换为格式正确的 CSV 文件,以便可以在 Microsoft Excel、Google Sheets 中对其进行检查、过滤、排序等,甚至可以通过 Import-CSV 返回 PowerShell 进行进一步处理。
\tsclient\c\temp\allprocesses.$env:COMPUTERNAME.csv
图。 13:将使用 PowerShell 检索到的数据导出到 .csv 文件中
请注意 -NoTypeInformation 的使用,它可以防止将一行属性类型输出到 csv,这会使 Excel 感到困惑,尽管很容易删除。您还可以使用 -Append 将新对象附加到现有 csv 文件,尽管新旧列之间应匹配。
我经常使用 Export-Csv 来进行“穷人的报告”,其中通过定期计划任务运行的 PowerShell 脚本会整理来自各种来源的数据,生成 CSV 文件并通过 Send-MailMessage 将它们通过电子邮件发送给“感兴趣的”各方(这需要访问 SMTP 邮件服务器)。
最后,如果您使用荷兰语语言环境,您可能需要使用 -delimiter ';',因为他们在逗号分隔值文件中使用分号 - 这一事实让我着迷在一家荷兰公司工作时要花一段时间来弄清楚!
结论
好吧,伙计们,这就是现在的全部内容。请注意:这没有顺序 - 非常随意 - 以同样的方式列出,你的工人的工具箱中的工具不会有顺序 - 如果你需要松开螺丝,那么你不太可能拿出锤子,因为你的第一选择(当然,除非你是杰里米·克拉克森)。
快乐排除故障!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag