Перейти к основному контенту
Office

Получить скрипты назначений-

Примечание:  Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке) .

Присоединенные, обозначающие сценариев оболочки power Get - классы пользователей

< #
   . Обзор
    Получите сведения о пользователе классов, как в какие классы пользователя такое участника и роль пользователя пользователя в эти классы.
    . Описание
    Сценарии считывает файл и получение всех классов и назначьте обновления роль с userrole упомянутых, если они не упомянутые учащегося, которая используется по умолчанию. Затем он получает в которых пользователю является владельцем и классы которой входит пользователь. Сценарий усовершенствовано и создает выходные данные с сведения о классе и роли пользователей в определенном классе.
   . Пример
    .\Get-userClasses.ps1 - ИмяПользователя < идентификатор конкретного пользователя >
        Сведения о пользователе согласно членства пользователя будет
    .\Get-userClasses.ps1 - ИмяПользователя < идентификатор конкретного пользователя > - classIdsFile < csv полный путь к файлу >
        Это будет получить сведения о пользователе классов, указанный в файл и пользователь членства CSV-файла, если мы не передать параметр userRole, он будут назначаться студентов по умолчанию для классов, указанный в CSV-файл
    .\Get-userClasses.ps1 - ИмяПользователя < идентификатор конкретного пользователя > - classIdsFile < csv полный путь к файлу > - userrole < учащихся и преподавателей >
        Это получите сведения о пользователе классов, указанного в файл и пользователь членства в CSV-файла. Для классов, указанные в файле данных пользователя создается согласно userrole указан (преподавателя или учебы)
   . Параметр ИмяПользователя
   Идентификатор пользователя пользователя для экспорта и удаление отправок
   . Параметр classIdsFile
   Полный путь к файлу обычный текст, который содержит один идентификатор класса в каждой строке.
   Пример списка классов. Каждая строка должны иметь один идентификатор класса
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Параметр userrole
   Чтобы указать, что роль пользователя, совместимых с идентификаторами класса, присутствующие в classIdsFile и пользователь будет удален из класса используется этого параметра.
   .paramter outputFileName
   Этот параметр используется для имени выходной файл сценария без расширения. Это не mandatorty по умолчанию выходной файл называется UserClassDetails
   . Заметки
   Нужно ли у Microsoft.IdentityModel.Clients.ActiveDirectory.dll и Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll являются обязательными
#>
параметр (
    [Параметр (обязательный = $true положение = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Попробуйте {
            [System.Guid]::Parse($_) | Исходящей Null
            $true
        } вторичной {
            исключение $_
        }
    })]
    [строка] $userId,

[параметр (обязательный = $false положение = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Если (-не ($_ | Test-Path)) {
            Исключение «файла или папки не существует»
        }
        Если (-не ($_ | Test-Path - PathType листьев)) {
            исключение «аргумент classIdsFile должен быть файла. Пути к папкам, не разрешены.»
        }
        Если ($_ - notmatch «(\.txt)») {
            Исключение «файла, указанного в аргументе путь должны быть txt типа»
        }
        возвращают $true
    })]
    [строка] $classIdsFile,

[Параметр (обязательный = $false положение = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ("Студент", "Преподавателя" ignorecase = $false)]
    $userrole [строка] = «Студент»

[параметр (обязательный = $false положение = 4)]
    [ValidateNotNullOrEmpty()]
    $outputFileName [строка] = «UserClassDetails»
)
# Загрузить ADAL
Добавление типа-пути «.\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll»

$script: maxRetryAttempt = 3
$script: authenticationResult = $null
$graphEndpoint = «https://graph.microsoft.com»
$authString = «https://login.windows.net/common»

# Выходные данные для подведения итогов успех или отказ вызовы API.
$script: getClassDetailsReport = @)

#Makes веб-запроса и состояние ответа "журналы"
функция вызвать RequestWithRetry
{
    параметр (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

для ($i = 1; $i-стороны $script: maxRetryAttempt; $i ++)
    {
        Попробуйте
        {
            $tempResult = вызвать WebRequest-метод Get - Uri $url-заголовки $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Метод = «Получить»
                ResponseCode = $tempResult.StatusCode
                ИмяКласса = $className
                Идентификатор класса = $classId
                RequestId = [«приглашение код изделия»] $tempResult.Headers
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            вернуть $tempResult
        }
        вторичной
        {
            IF($_. Exception.Response - новую $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers [«приглашение код изделия»]
            }

            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Метод = «Получить»
                ResponseCode = $responseCode
                ИмяКласса = $className
                Идентификатор класса = $classId
                RequestId = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Если ($i - eq $script: maxRetryAttempt)
            {
                исключение $_. Exception.Message
            }

Если ($responseCode - eq 401)
            {
                $script: authHeaders = Get AuthHeaders - useRefreshToken $true
            }
        }
    }
}

#Get authheaders
функция Get-AuthHeaders
{
    Параметр (
        [Parameter(Mandatory=$false)]
        [логическое] $useRefreshToken = $false
    )
    $clientId = «eb2298a1-a6bb-4f16-a27a-b582815db47b»
    $redirectURI = New-Object System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = «Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext» объект Нью - список_аргументов $authString
    Если ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint $clientID, $redirectURI, $promptBehavior)
    }
    еще
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{«Авторизация» = $authHeader; «Тип контента» = «Application/json»}
    вернуть $headers
}

Имя группы #Get
функция Get-ИмяКласса
{
    параметр (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = «{0}/v1.0/groups/{1}» -f $graphEndpoint, $classId
    $getClassDetailsResult = (вызвать RequestWithRetry-URL-адрес $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    возвращают $className
}

Сведения о #Get владения образовательных учреждений с помощью идентификатора пользователя введите endpoit и уточнение с создания назначений
функция Get-OwnershipDetails
{
    параметр (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / образовательных учреждений/пользователи / {1} / ownedobjects?" $top = 999» -f $graphEndpoint, $userId)
    $ownershipQuery = (вызвать RequestWithRetry-URL-адрес $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Где объект {$_.creationOptions-содержит «classAssignments»} | Выберите объект objectId, displayName
    вернуть $classes
}

#Get сведений членства образовательных учреждений с помощью идентификатора пользователя введите конечной точки и уточнение с создания назначений
функция Get-MembershipDetails
{
    параметр (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / образовательных учреждений/пользователи / {1} / memberof?" $top = 999» -f $graphEndpoint, $userId)
    $membershipQuery = (вызвать RequestWithRetry-URL-адрес $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Где объект {$_.creationOptions-содержит «classAssignments»} | Выберите объект objectId, displayName
    вернуть $classes
}

#Return настраиваемых pscutom объект, который имеет идентификатор класса, идентификатор пользователя, ИмяКласса, роли, getsubmissionprocessed и deletesubmissionprocessed свойства
функция Generate ClassRecord
{
    параметр (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        Идентификатор класса = $classId
        Идентификатор пользователя = $userId
        ИмяКласса = $displayName
        Роль = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

вернуть $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Это будет содержать сведения о всех классов «интересных»
$script: classDetails = @ {}

# Поиск являюсь классов (когда пользователь в настоящее время преподаватель)
Попробуйте
{
    $ownedClasses = get OwnershipDetails - ИмяПользователя $userId
    контейнер ($class в $ownedClasses)
    {
        Если (-не $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generate ClassRecord - ИмяПользователя $userId идентификатор класса - $class.objectId-$class.displayName - displayName «Преподавателя» роль
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
вторичной
{
    Ошибка записи $_. Exception.Message
}

# Поиск присоединились группы (когда пользователь в настоящее время учащегося)
Попробуйте
{
    $joinedClasses = get MembershipDetails - ИмяПользователя $userId
    контейнер ($class в $joinedClasses)
    {
        Если (-не $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generate ClassRecord - ИмяПользователя $userId идентификатор класса - $class.objectId-$class.displayName - displayName «Студент» роль
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
вторичной
{
    Ошибка записи $_. Exception.Message
}

# Сведения о найти дополнительные группы из файла.
IF(![ строка]: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = выберите строку-шаблон «\w»-путь $($classIdsFile) | Контейнер объекта {
        $_. Строка
    }

контейнер ($classId в $classIdsFromFile)
    {
        # Список классов текущего пользователя переходит precendence дополнительный набор классов
        #, то есть, если мы определили уже роли, мы не нужно делать его еще раз.
        Если (-не $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Попробуйте
            {
                $displayName = идентификатор ИмяКласса get - класса $classId
                $classRecord = идентификатор - ИмяПользователя $userId - класса Generate ClassRecord $classId-роль $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            вторичной
            {
                Запись узла $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Экспорт Csv-путь.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Экспорт Csv-путь.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (элемент get-пути «. \» — подробный). FullName
Запись-узел «Сведения о классе file($($outputFileName).csv) создается во время $directoryPath\($($outputFileName).csv)»
Запись-узел «Сведения о классе, report(UserClassDetailsReport.csv) создается во время $directoryPath\UserClassDetailsReport.csv»

Совершенствование навыков работы с Office
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×