【问题标题】:PowerShell: Passing Credentials to CQD (Teams)PowerShell:将凭据传递给 CQD(团队)
【发布时间】:2021-06-25 00:06:38
【问题描述】:

我需要将凭据传递给 Powershell 以进行 CQD。 (CQD 是 Teams 的 Office 365“通话质量仪表板”)。 我尝试使用来自https://www.powershellgallery.com/packages/CQDPowerShell/2.0.0/Content/CQDPowerShell.psm1https://answers.microsoft.com/en-us/msteams/forum/all/need-connection-uri-for-creating-a-cqd-powershell/f3c9e340-bdac-47c9-af52-d47d6df49fca 的脚本 但是如何绕过登录/密码提示并将凭据无缝传递给 Powershell?

这是我的脚本:

function Get-CQDToken ([string]$client_id)
{
  Add-Type -AssemblyName System.Web
  $resourceUrl = $WebResource
  $redirectUrl = "https://cqd.teams.microsoft.com/spd/"
  $nonce = [guid]::NewGuid().GUID
  $url = "https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&redirect_uri=" +
  [System.Web.HttpUtility]::UrlEncode($redirectUrl) +
  "&client_id=$client_id" +
  "&prompt=login" + "&nonce=$nonce" + "&resource=" + [System.Web.HttpUtility]::UrlEncode($WebResource)

  Add-Type -AssemblyName System.Windows.Forms

  $form = New-Object -TypeName System.Windows.Forms.Form -Property @{ Width = 440; Height = 640 }
  $web = New-Object -TypeName System.Windows.Forms.WebBrowser -Property @{ Width = 420; Height = 600; Url = ($url) }
  $DocComp = {
    $Global:uri = $web.Url.AbsoluteUri
    if ($Global:Uri -match "error=[^&]*|access_token=[^&]*") {$form.Close()}
  }

  $web.ScriptErrorsSuppressed = $true
  $web.Add_DocumentCompleted($DocComp)
  $form.Controls.Add($web)
  $form.Add_Shown({$form.Activate()})
  $form.ShowDialog() | Out-Null

  $Script:TokenLifeTime = [Web.HttpUtility]::ParseQueryString(($web.Url -replace '^.*?(expires_in.+)$','$1'))['expires_in']
  $Script:Token = [Web.HttpUtility]::ParseQueryString(($web.Url -replace '^.*?(access_token.+)$','$1'))['access_token']
  
  return ('Bearer {0}' -f $Script:Token)
}

$userName = "aaron"
$password = "Password_1234" 
$configRest = Invoke-RestMethod -Uri "https://cqd.teams.microsoft.com/repository/clientconfiguration" -Method Get -SessionVariable WebSession -UserAgent "CQDPowerShell V2.0"
$WebResource = $configRest.AuthLoginResource
$AADBearerToken = Get-CQDToken $configRest.AuthWebAppClientId
$WebSession.headers.Add('Authorization',$AADBearerToken)

【问题讨论】:

标签: powershell microsoft-teams


【解决方案1】:

请浏览此 ms 文档。 https://techcommunity.microsoft.com/t5/teams-developer/how-to-make-source-code-from-cqdpowershell-cmdlet-acquiring/m-p/1325146

虽然我们需要让代码在没有用户交互的情况下无限期运行。访问代码只工作 1 小时必须再次吸引。所以它不会工作

如果他们有自己的数据集市并希望构建自己的报告 UI 并自定义自己的报告等 - 创建通话记录 API 订阅 在 Microsoft Graph 中使用通话记录 API - Microsoft Graph v1.0 | Microsoft Docs 并使用它将通话记录流式传输到他们自己的系统中。

【讨论】:

  • 您发布的链接上的所有用户都遇到了与我发布的相同的问题。这里的目标是制定一种绕过手动交互的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多