目标:
我想生成这样的列表:

第一次尝试,Power Automate

我开始实施Power Automate的一代Excel,看起来像这样:
![]() |
要制定清单,这可能就足够了,但在撰写本教程时, Power Automate还不知道 提取成员,所有者或频道或团队是否是私有的。 所以它不适合我,我寻找另一个解决方案。
第二次尝试,使用PowerShell
回到强大的命令行工具通常是IT专业人员的反应,我并不失望。 MicrosoftTeams 模块 的 PowerShell.
使用 @ info: Jeedom 的, 我试着测试PowerShell适应Raspbian。 这是将其安装在已经托管 Jeedom 的 Raspi3B+ 上。
我有两个Jeedoms,一个在prod,一个在dev,一个在苏斯。 拉伸 拉伸 A Sub 的 巴斯特 · 巴斯特. 在 微软 文档, 指定使用Stretch,在家里它同时工作(对于我测试的内容)。
安装 PowerShell Core
询问您是安装32位还是64位版本是第一步,请键入:
Uname-m 的
任何低于 ARMv 的值7 在32位。
64 位版本从 AMRV 开始8.
最新版本的 Powershell 可以找到 https://github.com/PowerShell/PowerShell 对于 Raspbian.Version 7.1.0 在编写本教程的当天。
如果已经安装了旧版本或令人担忧的版本,则必须将其删除:
RM-rf ~/powershell
启动安装(更新版本号)
sudo su - apt-get install '^libssl1.0.[0-9]$'libunwind8 -y wget https://github.com/PowerShell/PowerShell/releases/download/v7.1.0/powershell-7.1.0-linux-arm32.tar.gz mkdir ~/powershell tar-xvf ./powershell-7.1.0-linux-arm32.gz -C ~/powershell sudo ~/powershell/pwsh-c New-ItemType SymbolicLink -Path "/usr/bin/pwsh" -Target"$pshome/pwsh(英语:pshome/pwsh)
~/powershell/pwsh
$PSVersionTable 的
在 PowerShell 中,安装 MicrosoftTeams 模块
卸载模块 - 命名 MicrosoftTeams Install-Module -Name MicrosoftTeams -AllowPrerelease Import-Module MicrosoftTeams
在命令行上做第一次测试
要检查 MicrosoftTeams 的版本和正确安装:
Get-module | ft 名称,版本
通过检索团队列表来尝试它
连接 Microsoft 团队
注: : 最近,xdg-open错误阻止了身份识别,我不得不使用Credential的脚本来识别自己。
查看 MiscrosoftTeams Module 命令列表
Get-command -MicrosoftTeams 模块
遵循黄色指示来识别自己
$AllTeams = Get-Team Write-Output(英语:Get-Team Write-Output) $AllTeams 联盟
团队名单必须显示
安装 PSFTP
要将Powershell生成的文件发送到FTP服务器,最简单的方法是安装PSFTP(在PowerShell中)
apt-get 安装 PSFPT
运行命令行脚本
启动脚本 _sigalou 队.ps1,使用此命令:
~/powershell/pwsh - 文件 "teams_sigalou.ps1"
使用 Teams 列表生成 CSV
经过多次测试,这里是最后一个脚本,不要犹豫地适应它。
# 生成 Teams 列表并导出到 CSV 文件的脚本,然后由 FTP 发送此文件以供 Excel 文件利用 # 导演: Sigalou 06/12/2020 Sigalou@sigalou-domotique # 使用GitHub或电子邮件来解决任何问题,请求改进,并毫不犹豫地提出改进建议。 # 请离开这些线 # 来源: http://jeedom.sigalou-domotique.fr/generate-a-list-teams-teams-their-channels-owners-members # https://github.com/sigalou/MicrosoftTeamstoCSV。 # FPT 识别 Param([string])$用户名,[字符串]$密码,[switch]$MFA,[int]$行动 ) $passwordFTP = ConvertTo-SecureString -AsPlainText "xxxx" -Force $credentialsFTP = New-Object System.Management.Automation.PSCredential "xxxx_ftp", $passwordFTP 导入模块 PSFTP # 识别 M365 $用户名 = "[email protected]" $密码 = "xxxx" #连接到 Microsoft Teams $Module=Get-Module - 命名 MicrosoftTeams -ListAvailable if($Module.count -eq 0){ Write-Host MicrosoftTeams 模块不可用 -ForegroundColor yellow) $确认= Read-Host 您确定要安装模块吗? [Y] Yes [N] No if($确认 -match "[yY]"){ Install-Module MicrosoftTeams } else { Write-Host MicrosoftTeams 模块是必需的.请使用 Install-Module MicrosoftTeams cmdlet 安装模块。 Write-Host 'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n -ForegroundColor 黄色 #使用 MFA if($mfa.IsPresent){ $Team=Connect-MicrosoftTeams #使用非 MFA else { #为调度目的在脚本中存储凭据/将凭证作为参数 if(())$Username -ne " ) - 和($密码 -ne " ) { $SecuredPassword = ConvertTo-SecureString -AsPlainText $密码 - 部队 $证书 = New-Object System.Management.Automation.PSCredential $用户名、$SecuredPassword 的 $Team=Connect-MicrosoftTeams -Credential $凭证 } 其他 { $Team=Connect-MicrosoftTeams } #检查团队连通性如果($Team-ne 团队 $null){ Write-host "nConnected to Microsoft Teams -ForegroundColor Green } 在创建 Teams 会话时发生 Write-Host 错误。 请再试一次 -ForegroundColor Red出口 # 位 位 位 $真的在屏幕上有一个调试以跟随这一代 $DEBUG=$假 的 $结果=" $结果=@() $path="./TeamsData.csv" If(Test-Path) $路径 { 删除 项 $路径 } Write-Host Data Recovery... $计数=0 $团队:Get-Team -Visibility Private $nbTeamsPrivate=$Teams.Count #$Team=Get-Team -Visibility Public -User [email protected] $团队(Get-Team -Visibility Public) $nbTeams=$Teams.Count $可乐 是 可乐$nbTeams.ToString()+"-"+$nbTeamsPrivate.ToString() $结果=@{'ColA'=$可乐;'ColB'="Updating of the $(get-Date -format 'dd-MM-yyyy' HH:mm').ToString();} $结果= New-Object psobject -Property $结果 , 结果 $结果 | 选择 'ColA', 'ColB' θ Export-Csv $路径 - NoTypeInformation - Append Write-Host 'nData处理... $Team | Sort-Object DisplayName θ foreach { $反向线=0 $团队名=$_.Display $描述 :$_. 描述 $GroupID=$_.GroupId $TeamUser=Get-TeamUser -GroupId $GroupID 的 GroupID $TeamMemberCount=$TeamUser.Count $TeamPrefix=" $putVirgule=0 $NameProprio=" $AllProprios=$TeamUser | Where-Object { $角色 -eq 'owner' } $TouslesProprios | foreach { if)$putVirgule -eq 1 { $putVirgule=0 $NameProprio=$NameProprio+"," } $NameProprio=$NameProprio+ 的$_.Name $PutVirgule=1 {\displaystyle } $NameProprio=$NameProprio+ 和 "+"$TeamMemberCount+"成员"如果($TeamMemberCount-gt 80){ $NameProprio=" $TeamPrefix=" {\displaystyle } 如果($_.Archived -eq "true" { $TeamPrefix=" $NameProprio="[存档]" } If($描述 -eq $团队 名称 {$描述=""} Write-Progress -Activity" $计数 /$nbTeams 团队 $团队 名称 " 如果$ModeDEBUG){ Write-Host 'n$团队 名称 ] $描述:ForegroundColor green} $count++ Get-TeamChannel -MembershipType Standard -GroupId $GroupID | foreach { $频道名=$_.DisplayName if($Channelname -ne "general" { Write-Progress -Activity) $计数 /$nbTeams 团队 $团队名 // $频道 名称 #$描述 :$_. 描述如果($ModeDEBUG){ Write-Host Ø> [$频道 名称 ] $ChannelMemberCount 的 $描述 } $结果=@'ColA'=";'ColB'="$Channelname;} 其他 { $结果=@{'ColA'=$TeamPrefix+$团队名称:'ColB'=$NameProprio;} $结果= New-Object psobject -Property $结果 , 结果 $结果 | 选择 'ColA', 'ColB' θ Export-Csv $路径 -NoTypeInformation -Append $MeterLines++ } $Channelprives=Get-TeamChannel -MembershipType Private -GroupId $GroupID 的 GroupID $Channelprivescount=$Canalprives.Count If($Channelprivescount -eq "1" { if()$ModeDEBUG){ Write-Host \> +$Canalprivescount 私人频道 $result=@'ColA'=";'ColB'="+1 private channel;'COLC'=";'ColD'=";} $结果= New-Object psobject -Property $结果 , 结果 $结果 | 选择 'ColA', 'ColB' θ Export-Csv $路径 -NoTypeInformation -Append $Counterlines++ } elseif($Channelprivescount -gt 1){ if()$ModeDEBUG){ Write-Host \> +$私人运河 {\displaystyle } $结果=@'ColA'=";'ColB'="+$私人频道Privescount Channels";} $结果= New-Object psobject -Property $结果 , 结果 $结果 | 选择 'ColA', 'ColB' θ Export-Csv $路径 -NoTypeInformation -Append $MeterLines++ } 如果($反数 -eq '1'){ if()$modeDEBUG){ Write-Host \> 添加一个空的 } 行 $result=@{'ColA'=";'ColB'=";} $结果= New-Object psobject -Property $结果 , 结果 $结果 | 选择 'ColA', 'ColB' θ Export-Csv $路径 - NoTypeInformation - 附录 } 如果($modeDEBUG){ Write-Host -ForegroundColor green } } Write-Progress -Activity"n Processed Teams count: $数"n"目前处理: $Teamname'n Currently Processing Channel : $已完成 if((Test-Path-Path) $路径)-eq "True"){ Write-Host "nReport available in $路径 -ForegroundColor Green } 断开-MicrosoftTeams # 将 TeamsData.csv 文件发送到 ftp Set-FTPConnection -Credentials $证书 FTP -Server ftp.xxxx.org -Session FloFTP -ignoreCert -UseBinary -KeepAlive $会话 = Get-FTPConnection -Session FloFTP Get-ChildItem ".\TeamsData.csv" | Add-FTPItem -Session $会话 -Path /Teams/ -Overwrite

