PowerShell 스크립트 샘플 - 관리자 및 직접 내보내기PowerShell script sample - Export managers and their directs
이 PowerShell 스크립트를 사용하여 팀 구성원으로 직접 각 관리자에 대한 인물 관리자 팀을 만들기 위한 준비를 위해 관리자 및 조직의 지시 목록을 내보낼 수 있습니다.Use this PowerShell script to export a list of managers and their directs for your organization, in preparation for creating a people manager team for each manager with their directs as team members.
이 PowerShell 스크립트에 대한 자세한 내용은 사용자 관리자 팀 만들기를 읽어보아야 합니다.To learn about this PowerShell script, read Create people manager teams.
PowerShell을 시작하는 데 도움이 필요한 경우 Azure PowerShell 개요를 참조하세요.If you're new to PowerShell and need help getting started, see Overview of Azure PowerShell.
Export-Managers 스크립트Export-Managers script
<#
.SYNOPSIS
Name: Export-ManagersDirectsFromAAD.ps1
The purpose of this sample script is to build a list of managers and direct reports to use with the New-TeamsFromManagers.ps1 to create a team for each people manager and their directs.
.DESCRIPTION
This sample script create new Teams based on the tab delimited .txt file you provide of managers and direct reports. It assumes that DisplayName is not null.
.NOTES
© 2020 Microsoft Corporation. All rights reserved. This document is provided
"as-is." Information and views expressed in this document, including URL and
other Internet Web site references, may change without notice.
.EXAMPLE
Export-ManagersDirectsFromAAD.ps1
#>
#Also create a type that validated the users licenses to ease the create-team burden
#also add checks to see if the types are appropriately in place.
#region Configurable Inputs
$OutputFile = "ExportedManagersDirects.txt"
#endregion
#region Data Model
class DirectReport {
[string] $UserPrincipalName
}
class Manager {
[ValidateNotNullOrEmpty()] [string] $UserPrincipalName
[string] $DisplayName
[System.Collections.ObjectModel.Collection[DirectReport]]$DirectReports
Manager (){
$this.DirectReports = New-Object -TypeName System.Collections.ObjectModel.Collection["DirectReport"]
}
}
#endregion
#region Helper Functions
Function Get-TimeStamp {
return "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date)
}
#endregion
#region Script Execution
#Step 1: Retrieve AAD users - attribute filtering off DirectReport cannot be applied
Write-Host -ForegroundColor Green "$(Get-Timestamp) Info: Starting to retrieve ALL Azure AD users."
$AllAADUsers = Get-AzureADUser -All $true -Filter "UserType eq 'Member' and AccountEnabled eq true"
Write-Host -ForegroundColor Green "$(Get-Timestamp) Info: Retriving Azure AD Users Complete.. `n"
#Step 2: Iterate through users, identify Managers and Directs
Write-Host -ForegroundColor Green "$(Get-Timestamp) Info: Starting to Retrieve Directs Reports"
$Managers = New-Object -TypeName System.Collections.ObjectModel.Collection["Manager"]
foreach ($user in $AllAADUsers) {
$directs = Get-AzureADUserDirectReport -ObjectId $user.UserPrincipalName
if ($null -ne $directs) {
if ($user.DisplayName -ne "") {
$manager = New-Object -TypeName Manager
$manager.UserPrincipalName = $user.UserPrincipalName
$manager.DisplayName = $user.DisplayName
foreach ($direct in $directs) {
$directReport = New-Object -TypeName DirectReport
$directReport.UserPrincipalName = $direct.UserPrincipalName
$manager.DirectReports.Add($directReport)
}
$Managers.Add($manager)
}
Write-Host "$(Get-Timestamp) Info: Added Manager: $($manager.UserPrincipalName)"
$i++
}
}
Write-Host -ForegroundColor Green "$(Get-Timestamp) Info: Retriving Direct Reports Complete.. `n"
#Step 3: Output in tab delimited .txt format
$output = New-Object -TypeName System.Collections.ObjectModel.Collection["String"]
$header = "Name`tDisplayName`tDirects"
$output.Add($header)
foreach ($manager in $Managers) {
[string] $directs = ""
foreach ($direct in $manager.DirectReports)
{
$directs += $direct.UserPrincipalName + ','
}
$directs = $directs.Substring(0,$directs.Length-1)
$row = "$($manager.UserPrincipalName)`t$($manager.DisplayName)`t$($directs)"
$output.Add($row)
}
#If Output File already exists from a previous run, it will be replaced.
$testPath = Test-Path .\$($OutputFile)
if ($testPath) {
Remove-Item .\$($OutputFile)
}
foreach ($line in $output) {
$line | Out-File -FilePath .\$($OutputFile) -Append
}
Write-Host -ForegroundColor Green "$(Get-Timestamp) Exported tab delimited output to $($OutputFile). `n"
#endregion