[玩转系统] 使用 PowerShell 读取和创建 SCCM 客户端日志
作者:精品下载站 日期:2024-12-14 12:41:38 浏览:14 分类:玩电脑
使用 PowerShell 读取和创建 SCCM 客户端日志
如果您是 SCCM 管理员,您可能熟悉 CMtrace 日志读取工具。 CMTrace 知道 SCCM 客户端日志的特定架构,但您知道可以像 CMTrace 一样使用 PowerShell 吗?
使用 PowerShell,您可以阅读:
- SCCM 客户端软件安装日志
- SCCM客户端软件更新日志
- SCCM 客户端硬件清单日志
..以及几乎所有其他人!
SCCM 客户端日志遵循一定的模式。要从它们中获得某种标准化输出,您必须了解该模式。幸运的是,对你来说,这已经完成了。
使用 PowrShell 读取 SCCM 客户端日志
查看下面查询 SCCM 客户端日志的 PowerShell 代码。
此 Get-SCCMClientLog
PowerShell 函数有两个参数; ComputerName
和 LogName
允许您查询远程计算机并指定您要查看的日志名称。
相关:PowerShell功能介绍
一旦您在 PowerShell 控制台中启用此函数,您就可以像下面一样运行它。下面的示例将查询名为 PC 的远程计算机并检索 execmgr 日志文件。
Get-SccmClientLog -ComputerName PC -LogName execmgr
所有繁重的工作都已在该函数中为您完成。
创建您自己的 SCCM 客户端日志
如果您想使用 Get-SCCMClientLog 函数但用于其他目的,该怎么办?您也可以创建自己的类似 SCCM 客户端的日志文件!
只要看看可排序的列和红色突出显示的美丽!起初,您可能认为您可以在 CMTrace 中查看任何类型的文本日志,您是对的。不过,让我们看一下 CMTrace 中的 WindowsUpdate.log 文件。
注意到所有的列都消失了吗? CMTrace 仍会查看常规日志文件,但您将无法获得 CMTrace 的一些出色功能。您很快就会发现文本文件必须正确格式化才能显示所有有用的列并正确定义哪些行应该突出显示为黄色和红色。 vs. 什么都没有。
我想向您展示几个名为 Write-Log
和 Start-Log
的 PowerShell 函数。这些函数专门用于将脚本的活动记录到日志文件中,然后可以在 CMTrace 中读取该日志文件。
在本文结束时,您将拥有一个可以在脚本中调用的函数来构建日志文件,以便 CMTrace 能够正确读取它们。
启动日志
为了避免必须一遍又一遍地指定相同的 SCCM 客户端日志文件路径,我选择创建一个名为 Start-Log
的函数。该函数旨在在脚本的顶部调用。该函数只是创建一个文本文件并(重要部分)设置一个名为 ScriptLogFilePath 的全局变量。
[CmdletBinding()]
param (
[ValidateScript({ Split-Path $_ -Parent | Test-Path })]
[string]$FilePath
)
try {
if (!(Test-Path $FilePath)) {
## Create the log file
New-Item $FilePath -Type File | Out-Null
}
## Set the global variable to be used as the FilePath for all subsequent Write-Log calls in this session
$global:ScriptLogFilePath = $FilePath
} catch {
Write-Error $_.Exception.Message
}
这个功能超级简单。但是,这是为了防止我们每次需要在脚本中调用 Write-Log
函数时都必须传递 LogFile
。通过简单地提前创建一个全局变量,我们可以简单地调用Write-Log
,它就会知道日志文件路径。
写日志
在脚本中调用 Start-Log
后,您现在就可以运行 Write-Log
将 SCCM 客户端日志消息写入日志文件。 Write-Log
有两个参数; 消息
和LogLevel
。 消息
很简单。这就是您想要写入日志的内容。 LogLevel
需要一些解释。
为了让 CMTrace 将线条突出显示为红色或黄色,需要以某种方式记录线条。更具体地说,它需要有一个像这样的字符串:type="1"
。这种类型的键可以是 1,2 或 3。这些指示脚本中的严重性级别。
例如,如果我想记录一条简单的信息消息,那么那就是 1
。如果我想记录更严重的活动,那么我可能会使用 2
,它会突出显示为黄色。最后,如果我希望该行在 CMTrace 中突出显示为红色,我可以选择 3
。
param (
[Parameter(Mandatory = $true)]
[string]$Message,
[Parameter()]
[ValidateSet(1, 2, 3)]
[int]$LogLevel = 1
)
注意到 LogLevel
参数了吗?默认情况下,它会将其设置为 1
,但如果您想编写脚本执行期间发生的一些更严重的活动,您始终可以在必要时覆盖它。
接下来,您需要方便地显示日期/时间列。为此,需要通过此字符串操作魔法实现特定的日期/时间格式。
$TimeGenerated = "$(Get-Date -Format HH:mm:ss).$((Get-Date).Millisecond)+000"
接下来,我将使用日志行在 CMTrace 中正确显示所需的所有适当格式来构建日志行模板。
$Line = '<![LOG[{0}]LOG]!><time="{1}" date="{2}" component="{3}" context="" type="{4}" thread="" file="">'
获得模板后,接下来就是构建 {}
中的内容。在这里,我构建了一个数组,然后将其传递到 $Line
中,以用真实信息替换所有 {}
。
$LineFormat = $Message, $TimeGenerated, (Get-Date -Format MM-dd-yyyy), "$($MyInvocation.ScriptName | Split-Path -Leaf):$($MyInvocation.ScriptLineNumber)", $LogLevel
它们的顺序与上面的 {}
相同。 {0}
将转换为 $Message
,{1}
将转换为 $TimeGenerated
,{2}
将转换为今天的日期,{4}
将转换为 $LogLevel
。
注意到我跳过了 {3}
吗?这就是我对你的所有忍者的态度。 CMTrace 有一个我从未使用过的组件列,因此我决定用它来做一些事情。
我想查看脚本的名称和调用 Write-Log
的行号。此字符串: "$ ($MyInvocau.ScriptName | Split-Path -Leaf):$ ($MyInvocau.ScriptLineNumber)"
就是实现这一点的原因。
然后,我使用 PowerShell 的字符串格式将这两个变量组合在一起来构建 $Line
。
$Line = $Line -f $LineFormat
然后只需将 $Line
写入已由 Start-Log
定义的文本文件即可。
Add-Content -Value $Line -Path $ScriptLogFilePath
怎么运行的
假设我构建了一个类似于 LogDemo.ps1 的脚本:
Start-Log -FilePath C:\MyLog.log
Write-Host "Script log file path is [$ScriptLogFilePath]"
Write-Log -Message 'simple activity'
Write-Log -Message 'warning' -LogLevel 2
Write-Log -Message 'Error' -LogLevel 3
该脚本在 C:\MyLog.log 处创建日志文件,然后通过使用我上面解释的 LogLevel
参数将 3 个严重级别写入日志。
当我使用 Get-Content
检查该文件的输出时,它看起来非常难看。
<![LOG[simple activity]LOG]!><time="18:56:26.307+000" date="12-03-2015" component="LogDemo.ps1:3" context="" type="1" thread="" file=""> <![LOG[warning]LOG]!><time="18:56:26.307+000" date="12-03-2015" component="LogDemo.ps1:4" context="" type="2" thread="" file=""> <![LOG[Error]LOG]!><time="18:56:26.307+000" date="12-03-2015" component="LogDemo.ps1:5" context="" type="3" thread="" file="">
不过,让我们在 CMTrace 中打开它,看看它是什么样子的。
那不是很漂亮吗?
即使您不是 SCCM 管理员,我也强烈建议您使用 CMTrace 来满足您的所有日志查看需求。
一旦您获得了适当格式的日志文件(您现在没有理由不这么做),只需在 CMTrace 中打开它们并观察 CMTrace 的美妙之处!
猜你还喜欢
- 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