Obter Scripts de atribuições-

Nota:  Queremos fornecer-lhe os conteúdos de ajuda mais recentes o mais rapidamente possível e no seu idioma. Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode informar-nos se as informações foram úteis no final desta página? Eis o artigo em inglês para referência.

Anexado destinam-se os scripts de shell de power Get - classes de utilizador

< #
   . Sinopse
    Obter as informações do utilizador classes como quais as classes o utilizador é membro e o que é a função de utilizador do utilizador nesses aulas.
    . Descrição
    Scripts lê o ficheiro e obter todos os IDs de classe e atualizações a função com o userrole mencionado, se não mencionados atribuir a estudantes que é a predefinição. Em seguida,-obtém classes na qual o utilizador é o proprietário e classes onde o utilizador é membro. Script corrige e gera o resultado com os detalhes de classe e a função de utilizador no classe específica.
   . Exemplo
    .\Get-userClasses.ps1 - ID de utilizador < Id de utilizador específico >
        Isto irá obter os detalhes de utilizador de acordo com a associação de utilizador
    .\Get-userClasses.ps1 - ID de utilizador < Id de utilizador específico > - classIdsFile < caminho do ficheiro csv concluída >
        Isto irá obter os detalhes do utilizador de classes especificados na associação de ficheiro e o utilizador csv, se podemos não ser efetuada com o parâmetro userRole, será atribuído para predefinição de Student para os IDs de classe especificado no ficheiro csv
    .\Get-userClasses.ps1 - ID de utilizador < Id de utilizador específico > - classIdsFile < caminho do ficheiro csv concluída > - userrole < estudante ou professor >
        Isto irá obter os detalhes do utilizador de classes especificados na associação de ficheiro e o utilizador csv. Para os IDs de classe especificado no ficheiro de dados de utilizador são gerados de acordo com userrole especificada (professor ou estudantes)
   . ID de utilizador do parâmetro
   ID de utilizador do utilizador para exportar e eliminar submissões
   . Parâmetro classIdsFile
   Caminho completo para um ficheiro de texto simples que contém uma única ID de classe em cada linha.
   exemplo da lista de IDs de classe. Cada linha deve ter o ID de classe única
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parâmetro userrole
   Este parmeter é utilizado para especificar a função de utilizador a ser utilizada para os ids de classe presentes no classIdsFile e o utilizador é removida da aula.
   .paramter nomeficheirosaída
   Este parâmetro é utilizado para atribuir um nome de ficheiro de exportação de script, não existem extensões. Não se trata de mandatorty por predefinição, o nome do ficheiro de saída é UserClassDetails
   . Notas
   Precisamos de ter o Microsoft.IdentityModel.Clients.ActiveDirectory.dll e Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll são necessários
#>
param (
    [Parâmetro (obrigatório = $true, posição = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Experimente {
            [System.Guid]::Parse($_) | Entrada nulo
            $true
        } capturas {
            accionar $_
        }
    })]
    [cadeia] $userId,

[parâmetro (obrigatório = $false, posição = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Se (-não ($_ | Test-Path)) {
            accionar "ficheiro ou pasta não existe"
        }
        Se (-não ($_ | Test-Path - PathType folha)) {
            accionar "o argumento classIdsFile tem de ser um ficheiro. Caminhos de pasta não são permitidos."
        }
        Se ($_ - notmatch "(\.txt)") {
            accionar "o ficheiro especificado no argumento caminho tem de ser do tipo txt"
        }
        devolver $true
    })]
    [cadeia] $classIdsFile,

[Parâmetro (obrigatório = $false, posição = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ('Estudantes', 'Professor', ignorecase = $false)]
    [cadeia] $userrole = "Estudantes",

[parâmetro (obrigatório = $false, posição = 4)]
    [ValidateNotNullOrEmpty()]
    [cadeia] $outputFileName = "UserClassDetails"
)
# Carregar ADAL
Tipo de adicionar-caminho ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

# Resultado para resumir sucesso/falha, de API chamadas.
$script: getClassDetailsReport = @)

Pedido #Makes web e regista o estado da resposta
função invocar RequestWithRetry
{
    param (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

para ($i = 1; $i-le $script: maxRetryAttempt; $i + +)
    {
        Experimente
        {
            $tempResult = invocar WebRequest-obter método - Uri $url-cabeçalhos $script: authHeaders
            $script: getClassDetailsReport + = [PSCustomObject] @{
                RequestUrl = $url
                Método de = "Obter"
                ResponseCode = $tempResult.StatusCode
                NomeClasse = $className
                ID de classe = $classId
                RequestId = $tempResult.Headers ["pedido-id"]
                DescriçãoDoStatus = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            devolver $tempResult
        }
        capturas
        {
            IF($_. Exception.Response - $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["pedido-id"]
            }

            $script: getClassDetailsReport + = [PSCustomObject] @{
                RequestUrl = $url
                Método de = "Obter"
                ResponseCode = $responseCode
                NomeClasse = $className
                ID de classe = $classId
                RequestId = $requestId
                DescriçãoDoStatus = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Se ($i - eq $script: maxRetryAttempt)
            {
                gerar $_. Exception.Message
            }

Se ($responseCode - eq 401)
            {
                $script: authHeaders = Get AuthHeaders - useRefreshToken $true
            }
        }
    }
}

#Get a authheaders
função Get-AuthHeaders
{
    Param (
        [Parameter(Mandatory=$false)]
        [booleano] $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = novo objeto System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = novo objeto "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Se ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    pessoa
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Autorização" = $authHeader; "Tipo de conteúdo" = "Aplicação/json"}
    devolver $headers
}

O nome do grupo de #Get
função Get-NomeClasse
{
    param (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl = "{0}/v1.0/groups/{1}" -f $graphEndpoint, $classId
    $getClassDetailsResult = (invocar RequestWithRetry-url $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    devolver $className
}

Detalhes de propriedade #Get do id de utilizador utilizando edu endpoit e refinar com a criação escreva às atribuições de
função Get-OwnershipDetails
{
    param (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / edu/utilizadores / {1} / ownedobjects?'$top = 999" -f $graphEndpoint, $userId)
    $ownershipQuery = (invocar RequestWithRetry-url $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Objeto de onde {$_.creationOptions-contém "classAssignments"} | Selecione objeto ID de objecto, displayName
    devolver $classes
}

#Get os detalhes de associação do id de utilizador utilizando edu ponto final e refinar com a criação escreva às atribuições de
função Get-MembershipDetails
{
    param (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / edu/utilizadores / {1} / memberof?'$top = 999" -f $graphEndpoint, $userId)
    $membershipQuery = (invocar RequestWithRetry-url $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Objeto de onde {$_.creationOptions-contém "classAssignments"} | Selecione objeto ID de objecto, displayName
    devolver $classes
}

#Return pscutom personalizado objeto que apresentam as propriedades de ID de classe, ID de utilizador, NomeClasse, função, getsubmissionprocessed e deletesubmissionprocessed
função Generate ClassRecord
{
    param (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        ID de classe = $classId
        ID de utilizador = $userId
        NomeClasse = $displayName
        Função = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

devolver $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Isto irá conter os detalhes para todas as categorias "interessantes"
$script: classDetails = @ {}

# Localizar propriedade classes (onde utilizador está atualmente um professor)
Experimente
{
    $ownedClasses = get OwnershipDetails - ID de utilizador $userId
    foreach ($class no $ownedClasses)
    {
        Se (-não $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = gerar ClassRecord - ID de utilizador $userId - ID de classe $class.objectId-função "Professor" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
capturas
{
    Erro de escrita $_. Exception.Message
}

# Localizar associadas grupos (onde utilizador está atualmente um estudante)
Experimente
{
    $joinedClasses = get MembershipDetails - ID de utilizador $userId
    foreach ($class no $joinedClasses)
    {
        Se (-não $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = gerar ClassRecord - ID de utilizador $userId - ID de classe $class.objectId-função "Estudantes" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
capturas
{
    Erro de escrita $_. Exception.Message
}

# Localize detalhes para os grupos adicionais do ficheiro.
IF(![ cadeia]::/ IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = selecione cadeia-padrão "\w"-caminho $($classIdsFile) | Objeto ForEach {
        $_. Linha
    }

foreach ($classId no $classIdsFromFile)
    {
        # Lista de classes atual do utilizador leva-o até precendence sobre o conjunto de classes adicional
        # ou seja, se de que já identificámos a função, não precisamos de fazê-lo novamente.
        Se (-não $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Experimente
            {
                $displayName = NomeClasse get - ID de classe $classId
                $classRecord = gerar ClassRecord - ID de utilizador $userId - ID de classe $classId-função $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            capturas
            {
                Anfitrião de escrita $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Exportar Csv-caminho.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Exportar Csv-caminho.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (get-Item-caminho ". \"-verboso). FullName
Anfitrião de escrita "Detalhes de classe file($($outputFileName).csv) é gerado durante a $directoryPath\($($outputFileName).csv)"
Anfitrião de escrita "Detalhes de classe report(UserClassDetailsReport.csv) é gerado durante a $directoryPath\UserClassDetailsReport.csv"

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×