当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

作者:精品下载站 日期:2024-12-14 05:33:52 浏览:12 分类:玩电脑

团队审核 – 不再有范围蔓延或团队蔓延


[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

您想了解有关使用 PowerShell 监控 Microsoft Teams 的更多信息吗?了解如何随时间检查设置以检查更改。防止(或解决)配置漂移。

从哪儿开始

范围蔓延、配置蔓延和团队蔓延都有一个共同的根本问题——缺乏监控或控制来防止这些变化。在本文中,我们将讨论如何使用 PowerShell 来监视团队及其配置并确定已发生的更改。由于 Teams 的规模和复杂性,我们不会涵盖每个配置方面,而是通过演练一些如何使用 PowerShell 的示例来设置管理员以获得成功。对此的灵感来自于被称为配置分析器的安全中心,它有一个漂移分析和历史选项卡。

初始点

与使用任何 PowerShell 脚本或工具一样,请确保您的 Microsoft Teams PowerShell 模块正在运行最新版本:

Update-Module MicrosoftTeams

然后关闭您的 PowerShell 会话,因为这可以确保下次加载 PowerShell 模块时,它将是最新版本。

验证您的版本是最新的:

Import-Module MicrosoftTeams
Get-Module MicrosoftTeams

再次比较可用的版本号(此处)。

使用什么 cmdlet

构建自定义脚本来审核 Microsoft Teams 配置可以纯粹使用 Get-* cmdlet 来完成,因为这些是发现 PowerShell cmdlet,可查询设置和对象并提供所需的详细信息。可以通过以下一行找到这些内容的快速列表(连接到 Microsoft Teams PowerShell 端点后):


Get-Command Get-* | 
Where Source -eq MicrosoftTeams | 
Sort Name | 
ft Name

我们不会逐一审查可用的 cmdlet,因为其中有超过 150 个,但我们将审查一些选定的示例,以帮助发现 Teams 中的重要项目以“审核”设置。

Microsoft Teams 和 Teams 渠道

队伍名单

跟踪团队的数量和类型是审核 Teams 配置的一个重要方面,因为 Teams 可能会超出组织打算创建或维护的范围。通过验证团队数量,我们可以在数量失控之前看到增长和使用情况。首先,查询队伍数量:

(Get-Team).Count

应该显示类似的结果:

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

Get-Team | ft DisplayName,Visibility,Archived,GroupId

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

团队频道列表

每个团队可以有一个或多个渠道来跟踪:

Get-Team | 
ForEach-Object {Write-Host $_.DisplayName -ForegroundColor Yellow ;Get-TeamChannel -GroupID $_.GroupID | 
ft DisplayName,Membership*,Description}

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

使用上面的 PowerShell cmdlet,我们能够收集有关 Teams 环境的大量数据和设置。我们如何使用这些数据来真正审核环境?其一,我们可以监控 Teams 和 Teams 频道的蔓延。在下面的示例中,我们每月检查 Teams 和 Teams 频道,看看发生了什么变化:

例子

首次检查团队和频道的数量时,可能有 35 个团队和 56 个频道,然后当再次运行 cmdlet 时(也许一个月后),这些数字可能会增加到 40 和 65。我们可以像这样提取初始计数:

# Team count
(Get-Team).Count

# Teams channel count
Get-Team | 
Foreach-Object {$Channels = (Get-TeamChannel -GroupID $_.GroupID).Count;$TeamsChannelCount=$TotalChannels+$Channels}

稍后,我们可以按计划再次以编程方式检查这些数字:

$TeamsCount = (Get-Team).Count
Get-Team | 
Foreach-Object {$Channels = (Get-TeamChannel -GroupID $_.GroupID).Count;$TeamsChannelCount=$TotalChannels+$Channels}

报告-现实世界的例子

当我们想要开始审核 Teams 和 Teams 频道的数量时,我们需要一种方法来存储计数并将这些计数与 Teams 中的当前数量进行比较。

第一次运行:


# Date column
$CurrentMonth = Get-Date -Format "MM.yyyy"

# File header
"Date,TeamsCount,TeamsChannelCount" | 
Out-File 'TeamsAndChannelCounts.csv'

# First month counts
$TeamsCount = (Get-Team).Count
Get-Team | 
Foreach-Object {$Channels = (Get-TeamChannel -GroupID $_.GroupID).Count;$TeamsChannelCount=$TotalChannels+$Channels}
$Output = "$CurrentMonth,$TeamsCount,$TeamsChannelCount" | 
Out-File 'TeamsAndChannelCounts.csv' -Append

我们有数据行的预定运行可以检查差异:

# Import data
$TeamsData = Import-Csv .\TeamsAndChannelCounts.csv

# Last line
$CurrentMonth = $TeamsData[-1]

# Next to last line to compare
$LastMonth = $TeamsData[-2]

# Check each Teams data point for change
If ($CurrentMonth.TeamsCount -gt $LastMonth.TeamsCount) {Write-Host 'There are new Teams present.'}
If ($CurrentMonth.TeamsChannelCount -gt $LastMonth.TeamsChannelCount) {Write-Host 'There are new Teams Channels present.'}

如果我们需要深入了解一下,我们还可以检查自上次以来哪些团队是新的。为此,我们可以第一次运行它:

Get-Team | 
select DisplayName,Visibility,GroupId,Archived,Description | 
Export-Csv -Path HistoricalTeams.csv

每个月我们都可以检查更改:

Get-Team | 
select DisplayName,Visibility,GroupId,Archived,Description | 
Export-Csv -Path CurrentTeams.csv

然后我们可以使用Compare-Object来比较这两个文件:

$Historical = Get-Content .\HistoricalTeams.csv
$Current = Get-Content .\CurrentTeams.csv
Compare-Object -ReferenceObject $Historical -DifferenceObject $Current

我们在此示例中看到有两个不同的组,它们是新的,因为 SideIndicator 值指向 $Current 变量中的文件数据。

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

我们还可以使用 PowerShell 执行另一步骤,将历史团队文件替换为当前文件,以便我们随时可以比较最新的计数:

Remote-Item HistoricalTeams.csv
Rename-Item CurrentTeams.csv HistoricalTeams.csv

访客访问

在团队内,可以控制您的来宾有权访问的内容,我们可以使用 PowerShell 控制这些设置。一般来说,监视来宾用户的 Teams 配置方面是 Teams 配置安全性的一个重要方面。因此,我们可以使用 PowerShell 来探索这一点,看看我们可以发现和监控什么。

首先是 PowerShell cmdlet:

Get-Command Get-*team*guest*

它提供了这些 cmdlet:

Get-CsTeamsGuestCallingConfiguration
Get-CsTeamsGuestMeetingConfiguration
Get-CsTeamsGuestMessagingConfiguration

其中每一项都将揭示配置的不同方面。使用 PowerShell,我们可以记录并比较更改的设置,就像我们对团队和频道所做的那样。

访客呼叫配置

首先,让我们分解基本的访客呼叫配置:

$CurrentMonth = Get-Date -Format "MM.yyyy"
$GuestCallingCfg = (Get-CsTeamsGuestCallingConfiguration).AllowPrivateCalling
$FileHeader = "Date,AllowPrivateCalling" | 
Out-File 'GuestCallingConfiguration.csv'
$Output = "$CurrentMonth,$GuestCallingCfg" | 
Out-File 'GuestCallingConfiguration.csv' -append

这里只有一个重要值。我们可以验证这不会随着时间的推移而发生变化,我们必须每月、每季度等运行一次:

$CurrentMonth = Get-Date -Format "MM.yyyy"
$GuestCallingCfg = (Get-CsTeamsGuestCallingConfiguration).AllowPrivateCalling
$FileHeader = "Date,AllowPrivateCalling" | 
Out-File 'GuestCallingConfiguration.csv'
$Output = "$CurrentMonth,$GuestCallingCfg" | 
Out-File 'GuestCallingConfiguration-current.csv' -append

然后我们可以像这样比较两个输出文件:

$Historical = Import-Csv GuestCallingConfiguration.csv
$Current = Import-Csv GuestCallingConfiguration-current.csv
$Historical.AllowPrivateCalling -eq $Current.AllowPrivateCalling

如果发生更改,结果将如下所示:

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

来宾会议配置

接下来,我们有访客会议配置,其中包含更多要管理的设置。首先,我们需要创建我们今天配置的基线或发现:

第一次运行:

# Discover current configuration 
$GuestMeeting = Get-CsTeamsGuestMeetingConfiguration | 
Select AllowIPVideo,ScreenSharingMode,AllowMeetNow,LiveCaptionsEnabledType,AllowTranscription

# Create a Hash table output to be exported 
$Hashtable = New-Object System.Collections.Hashtable
$Hashtable['AllowIPVideo'] = $GuestMeeting.AllowIPVideo
$Hashtable['ScreenSharingMode'] = $GuestMeeting.ScreenSharingMode
$Hashtable['AllowMeetNow'] = $GuestMeeting.AllowMeetNow
$Hashtable['LiveCaptionsEnabledType'] = $GuestMeeting.LiveCaptionsEnabledType
$Hashtable['AllowTranscription'] = $GuestMeeting.AllowTranscription

# Export $Hashtable variable to a CSV for comparison 
$HashTable.GetEnumerator() | 
Select-Object -Property Key,Value | 
Export-Csv -NoTypeInformation -Path GuestMeeting.csv

然后,随着时间的推移,我们可以进行后续运行[每月、每季度、每年],这将使用上面相同的代码,但将输出文件更改为“GuestMeeting-Current.csv”:

$HashTable.GetEnumerator() | 
Select-Object -Property Key,Value | 
Export-Csv -NoTypeInformation -Path GuestMeeting-Current.csv

比较两种配置:

# Compare the original and current CSV files
$CSV1 = Get-Content .\GuestMeeting.csv
$CSV2 = Get-Content .\GuestMeeting-Current.csv
Compare-Object $CSV1 $CSV2

如果检测到差异,我们应该看到如下内容:

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

访客消息配置

也可以使用访客消息配置执行相同的过程。对于第一次运行,我们可以使用以下代码:

# Discover current configuration 
$GuestMessaging = Get-CsTeamsGuestMessagingConfiguration | 
Select AllowUserEditMessage,AllowUserDeleteMessage,AllowUserDeleteChat,AllowUserChat,AllowGiphy,GiphyRatingType,AllowMemes,AllowImmersiveReader,AllowStickers

# Create a Hash table output to be exported
$Hashtable = New-Object System.Collections.Hashtable
$Hashtable['AllowUserEditMessage'] = $GuestMessaging.AllowUserEditMessage
$Hashtable['AllowUserDeleteMessage'] = $GuestMessaging.AllowUserDeleteMessage
$Hashtable['AllowUserDeleteChat'] = $GuestMessaging.AllowUserDeleteChat
$Hashtable['AllowUserChat'] = $GuestMessaging.AllowUserChat
$Hashtable['AllowGiphy'] = $GuestMessaging.AllowGiphy
$Hashtable['GiphyRatingType'] = $GuestMessaging.GiphyRatingType
$Hashtable['AllowMemes'] = $GuestMessaging.AllowMemes
$Hashtable['AllowImmersiveReader'] = $GuestMessaging.AllowImmersiveReader
$Hashtable['AllowStickers'] = $GuestMessaging.AllowStickers

# Export $Hashtable variable to a CSV for comparison 
$HashTable.GetEnumerator() | 
Select-Object -Property Key,Value | 
Export-Csv -NoTypeInformation -Path GuestMessaging.csv

后续运行:[每月、每季度、每年]

使用上面相同的代码,但将输出文件更改为“GuestMessaging-Current.csv”:

$HashTable.GetEnumerator() | 
Select-Object -Property Key,Value | 
Export-Csv -NoTypeInformation -Path GuestMessaging-Current.csv

比较:

# Compare the original and current CSV files 
$CSV1 = Get-Content .\GuestMessaging.csv$CSV2 = Get-Content .\GuestMessaging-Current.csv
Compare-Object $CSV1 $CSV2

如果检测到差异,我们应该看到如下内容:

[玩转系统] 团队审核 – 不再有范围蔓延或团队蔓延

请注意,在上面的比较中,两个值已更改:AllowMemesAllowStickers,并且通过指示符 (==>),新配置现在为 'True' 对于这两个设置,而原始配置 (

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯