[玩转系统] 通过 PowerShell 的 Teams-Webhooks – 第 3 部分
作者:精品下载站 日期:2024-12-14 08:11:45 浏览:15 分类:玩电脑
通过 PowerShell 的 Teams-Webhooks – 第 3 部分
Teams 自适应卡:
使用 PowerShell 进行证书监控
如果您是从未因证书过期而出现问题或停机的管理员之一,那么您要么非常幸运,要么您对证书管理掌握得非常好。在许多公司中,时不时地会出现证书过期的问题,只有在证书过期且无法再访问服务时才会检查其有效性。
为了防止这种情况再次发生在您身上,我将向您提供一个 PowerShell 脚本,用于检查服务器是否有过期的证书。诚然,读取证书的脚本相当无趣,几乎无关紧要。因为更令人兴奋和重要的是通知您证书到期的方式。在本系列的前面部分中,我向您展示了如何通过 PowerShell 轻松向团队发送通知或警报(您可以在此处阅读相关内容:第 1 部分、第 2 部分)。然而,我们始终关注纯粹的信息层面,这在很多情况下就足够了。在本文中,我想向您展示如何发送所谓的“自适应卡”。这些的优点是您可以向消息添加按钮,这为您提供了对警报做出反应的新的、优雅的可能性。
你的服务器内存满了?没问题!通过 PowerShell 获取通知并实施按钮来扩展内存!您可以在咖啡机旁等待或送孩子上学时通过智能手机按下此按钮。
- 您想自动将警报转换为票证吗?在 Teams 卡中添加一个按钮,允许您通过 HTTP 请求在票证系统中创建新条目,并添加 Teams 消息中的信息。
- Azure 中的服务器意外停止?收到通知并通过在 Teams 中单击来重新启动它。
正如您所看到的,在许多用例中,消息的直接响应可能很有用。在本文中,我们构建一个脚本,用于读取各种服务器上的证书并检查它们是否会在接下来的 100 天内过期,并向 Teams 发送消息。此消息有一个按钮,可将我们直接带到 Windows 管理中心中相应服务器的证书设置,从而允许我们进行更改。
我们将设计的消息如下所示:
带有按钮的消息示例
准备
同样,我们需要一个可以接收 WebHook 的 Teams 通道。 (在本系列文章的前面部分中,更详细地描述了配置)。如果您是铁杆玩家,您当然可以使用 JSON 设计 Teams 消息。然而,由于这是一个相当简单的要求,我们可以让我们的生活变得更加轻松:PSTeams 模块允许您使用简单的 PowerShell cmdlet 来设计卡,因此您不必用 JSON 来折磨自己。当然,在我们的例子中,仍然需要安装 Windows Admin Center;但是,如果您不使用 WAC,您当然可以自由选择对按钮警报做出何种反应。向我们显示服务器上将在未来 100 天内过期的所有证书的命令是:
Get-Childitem Cert: -Recurse -ExpiringInDays 100 |
Select-Object FriendlyName, Issuer, Thumbprint, NotBefore, NotAfter, PSParentPath
现在我们已经拥有开始设计 AdaptiveCard 所需的所有信息。脚本开头的代码如下所示:
# Array with Computers, that should be monitored
$TargetComputers = @("Server01")
# TeamsID - URL generated by Teams
$TeamsID = ""
# URL of Windows Admin Center
$WACURL = "<https://localhost:6516/>"
# ModuleCheck: Installs PSTeams if not available
if(-not (Get-Module -ListAvailable PSTeams)) {
Install-Module -Name PSTeams -Force
}
else {
Write-Verbose "PSTeams is already installed."
}
使用 PSTeams 设计团队卡
PSTeams 中的三个对象与我们相关:部分、事实和按钮。部分服务于逻辑和视觉划分,从属于它们的是事实和按钮。事实包含我们想要显示的有关团队的所有信息。按钮打开网站或以其他方式发出 HTTP 请求。
在我们的例子中,证书属性就是事实。证书的友好名称以及指纹等表示为事实并从属于一个部分。一个部分始终仅包含一个证书。团队消息始终仅涉及一台服务器,因此我们只需要整个卡中的一个按钮,这会将我们引导至 Windows Admin Center 中的服务器条目。这个按钮有它自己的部分。
所以现在我们必须从数组“$TargetComputers”中查询所有服务器 - 我们使用 foreach 循环来执行此操作,以便我们可以从相应的服务器获取相应的证书数据之后直接:
$scriptBlock = {
Get-ChildItem Cert:\LocalMachine -Recurse -ExpiringInDays 100 |
Select-Object FriendlyName, Issuer, Thumbprint, NotBefore, NotAfter, PSParentPath
}
foreach ($computer in $TargetComputers) {
# Getting all certificates of specified computer, that will expire in the next 100 days
[array]$ExpiringCerts = Invoke-Command -ComputerName $computer -Credential $cred -ScriptBlock $scriptBlock
}
$ExpiringCertificates 变量现在包含将在接下来的 100 天内过期的所有证书。现在您必须如上所述将此信息分发到不同的部分。为此,创建一个空数组,我们将其逐个填充。在已经描述的 ForEach 循环中,我们创建另一个 ForEach 循环,它迭代所有证书,为每个证书创建一个新部分,用事实(即当前证书的属性)填充此部分,然后将新创建的部分添加到该部分大批。所以最后,我们现在有了一个包含所有信息的数组(分为多个部分),并且可以将其直接发送到 Teams。但在此之前,我们创建最后一个部分,其中包含 Windows 管理中心的按钮。我们修改按钮为每个服务器调用的链接,因为在 URL 中我们可以定义应在管理中心打开哪台计算机/服务器。所以我们的代码现在看起来像这样:
# Array with Computers, that should be monitored
$TargetComputers = @("Server01")
# TeamsID - URL generated by Teams
$TeamsID = ""
# URL of Windows Admin Center
$WACURL = "<https://localhost:6516/>"
# ModuleCheck: Installs PSTeams if not available
if(-not (Get-Module -ListAvailable PSTeams)) {
Install-Module -Name PSTeams -Force
}
else {
Write-Verbose "PSTeams is already installed."
}
# Iterating through every computer in $TargetComputers
foreach ($computer in $TargetComputers) {
# Getting all certificates of specified computer, that will expire in the next 100 days
[array]$ExpiringCerts = Invoke-Command -ComputerName $computer -Credential $cred -ScriptBlock {
Get-ChildItem Cert:\LocalMachine -Recurse -ExpiringInDays 100 |
Select-Object FriendlyName, Issuer, Thumbprint, NotBefore, NotAfter, PSParentPath
}
# Checking, whether there are any certificates expiring in the specified timespan before proceeding
if ($ExpiringCerts.Count -gt 0){
# Creating Sections with embedded Facts (Certificate Information) for Teams
$Sections = @()
foreach ($cert in $ExpiringCerts) {
$facts = @()
$cert |
Get-Member |
Where-Object MemberType -eq NoteProperty |
ForEach-Object {
$facts += New-TeamsFact -Name $_.Name -Value "**$($cert.($_.Name))**"
}
$Sections += New-TeamsSection -ActivityDetails $facts
}
# Gets server-URL within Windows Admin Center and Teams-Button to access it
$WACURLServer = $WACURL + "servermanager/connections/server/" + $computer + "/tools/certificates"
$Button = New-TeamsButton -Name 'Edit Certificates' -Link $WACURLServer -Type 'ViewAction'
$Section = New-TeamsSection -Buttons $Button
# Send Card
$Sections += $Section
$Count = $ExpiringCerts.count
Send-TeamsMessage -URI $TeamsID -Color Red -Sections $Sections `
-MessageTitle "Alert: $count Certificates on $computer expire within the next 100 days!"
}
}
结论
因此,现在当我们运行此代码并且机器上有过期证书时,我们会得到上面显示的团队卡。您现在只需几分钟就可以为您的证书创建自己的警报 ?
附加说明:
如果组织中的所有证书都是通过中央 CA 颁发的,则更有意义的做法是不要向每个单独的服务器查询其证书,而是在 CA 上运行中央查询。给出的 100 天并不是我的建议,因为这个数字在我看来太大了。我选择 100 天只是为了演示目的,无论如何都会有一些点击。我认为,建议监测时间为 15-30 天,当然,这应该根据环境的不同进行不同的评估。
猜你还喜欢
- 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