Skrypty przypisania — pobieranie

Uwaga:  Staramy się udostępniać najnowszą zawartość Pomocy w Twoim języku tak szybko, jak to możliwe. Ta strona została przetłumaczona automatycznie i może zawierać błędy gramatyczne lub nieścisłości. Chcemy, aby ta zawartość była dla Ciebie przydatna. Prosimy o powiadomienie nas, czy te informacje były pomocne, u dołu tej strony. Oto angielskojęzyczny artykuł do wglądu.

Dołączone są skryptów powłoki power Get - klasy użytkowników

< #
   . Streszczenie
    Uzyskaj informacje klasy użytkownika, tak jak w klas, które użytkownik jest członkiem i co to jest roli użytkownika w tych klas.
    . Opis
    Skryptów odczytuje plik i uzyskać wszystkie klasy i aktualizacje roli z userrole wymienionych, o ile nie wymienionych przydzielanie do uczniów, jest to domyślne. A następnie go uzyskuje informacje klasy, w których użytkownik jest właścicielem i klasy, w której użytkownik jest członkiem. Skrypt usprawnia i generuje dane wyjściowe z klasy szczegóły i roli użytkownika w określonej klasy.
   . Przykład
    .\Get-userClasses.ps1 - nazwa użytkownika < określonego użytkownika identyfikator >
        To otrzymają szczegóły użytkownika według członkostwa użytkownika
    .\Get-userClasses.ps1 - nazwa użytkownika < określonego użytkownika identyfikator > - classIdsFile < ścieżka do pliku csv pełną >
        To otrzymają szczegóły użytkownika klas określonych w csv członkostwa plik i użytkownika, jeśli firma Microsoft nie zostaną wykryte parametr userRole, zostanie przypisany do uczniów domyślną dla klasy określonego w pliku csv
    .\Get-userClasses.ps1 - nazwa użytkownika < określonego użytkownika identyfikator > - classIdsFile < ścieżka do pliku csv pełną > - userrole < uczniów i nauczycieli >
        To otrzymają szczegóły użytkownika klas określonych w członkostwa w pliku i użytkownika csv. W przypadku klasy określone w pliku danych użytkownika jest generowany według określonej userrole (uczniów lub studentów)
   . Nazwa użytkownika parametru
   Identyfikator użytkownika, aby wyeksportować i usunąć przesłanych elementów
   . Parametr classIdsFile
   Pełna ścieżka do pliku jako zwykły tekst, który zawiera pojedynczy identyfikator klasy w każdym wierszu.
   Przykładowa lista klasy. Każdy wiersz ma pojedynczy identyfikator klasy
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parametr userrole
   Ten parmeter służy do określania roli użytkownika ma być używany dla identyfikatory klas obecnych w classIdsFile i użytkownika są usuwane z zajęć.
   Nazwa_pliku_wyjściowego .paramter
   Ten parametr jest używany do nazwy pliku dane wyjściowe skrypt nie rozszerzenia. Nie jest mandatorty domyślnie nazwę pliku wyjściowego jest UserClassDetails
   . Notatki
   Firma Microsoft musi być Microsoft.IdentityModel.Clients.ActiveDirectory.dll i Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll są wymagane
#>
parametr (
    [Parametr (obowiązkowe = $true, położenie = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Spróbuj {
            [System.Guid]::Parse($_) | Wyjściowego Null
            $true
        } efektywnej {
            Zgłoś $_
        }
    })]
    [ciąg] $userId,

[parametr (obowiązkowe = $false, położenie = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Jeśli (-nie ($_ | Test-Path)) {
            Zgłoś "plik lub folder nie istnieje"
        }
        Jeśli (-nie ($_ | Test-Path - PathType liści)) {
            generują "wartość argumentu classIdsFile musi być plikiem. Ścieżka folderu nie są dozwolone."
        }
        Jeśli ($_ - notmatch "(\.txt)") {
            Zgłoś "plik określonej w argumencie path musi być typu txt"
        }
        Zwraca $true
    })]
    [ciąg] $classIdsFile,

[Parametr (obowiązkowe = $false, położenie = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ("Uczniów", "Nauczyciela" ignorecase = $false)]
    [ciąg] $userrole = "Uczniów"

[parametr (obowiązkowe = $false, położenie = 4)]
    [ValidateNotNullOrEmpty()]
    [ciąg] $outputFileName = "UserClassDetails"
)
Nr ładowanie ADAL
Dodawanie typu-ścieżka ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

Nr wyjścia do podsumowania powodzenia i niepowodzenia interfejsu API.
$script: getClassDetailsReport = @)

Żądanie #Makes sieci web i rejestruje stan odpowiedzi
Funkcja Wywołaj RequestWithRetry
{
    parametr (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

Aby uzyskać ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        Spróbuj
        {
            $tempResult = WebRequest Wywołaj — uzyskiwanie metody - Uri $url-nagłówki $script: authHeaders
            $script: += getClassDetailsReport [PSCustomObject] @{
                RequestUrl = $url
                Metoda = "Pobierz"
                ResponseCode = $tempResult.StatusCode
                Nazwa_klasy = $className
                Identyfikator klasy = $classId
                IdentyfikatorŻądania = $tempResult.Headers ["identyfikator żądania"]
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            Zwraca $tempResult
        }
        efektywnej
        {
            IF($_. Exception.Response — No $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers ["identyfikator żądania"]
            }

            $script: += getClassDetailsReport [PSCustomObject] @{
                RequestUrl = $url
                Metoda = "Pobierz"
                ResponseCode = $responseCode
                Nazwa_klasy = $className
                Identyfikator klasy = $classId
                IdentyfikatorŻądania = $requestId
                StatusDescription = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Jeśli ($i - eq $script: maxRetryAttempt)
            {
                Zgłoś $_. Exception.Message
            }

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

#Get authheaders
Funkcja Get-AuthHeaders
{
    Parametr (
        [Parameter(Mandatory=$false)]
        [wartość logiczna] $useRefreshToken = $false
    )
    $clientId = "eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = System.Uri("urn:ietf:wg:oauth:2.0:oob") nowy obiekt
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = nowy obiekt "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - ArgumentList $authString
    Jeśli ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    jeszcze
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + "" + $script:authenticationResult.AccessToken
    $headers = @{"Autoryzacji" = $authHeader; "Typ zawartości" = "Aplikacji i json"}
    Zwraca $headers
}

#Get grupy nazwa
Funkcja Get-Nazwa_klasy
{
    parametr (
        [Parameter(Mandatory=$true)] $classId
    )

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

Szczegóły dotyczące własności #Get identyfikatora użytkownika, przy użyciu instytucji edukacyjnych endpoit i Aktualizuj z tworzeniem wpisz przypisaniach
Funkcja Get-OwnershipDetails
{
    parametr (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0}-instytucji edukacyjnych/użytkownicy / {1}-ownedobjects?" $top = 999 "-f $graphEndpoint, $userId)
    $ownershipQuery = (Wywołaj RequestWithRetry-adres url $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | Gdzie obiekt {$_.creationOptions-zawiera "classAssignments"} | Identyfikator obiektu zaznacz obiekt, displayName
    Zwraca $classes
}

#Get szczegóły członkostwa identyfikatora użytkownika, przy użyciu instytucji edukacyjnych punktu końcowego i Aktualizuj z tworzeniem wpisz przypisaniach
Funkcja Get-MembershipDetails
{
    parametr (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0}-instytucji edukacyjnych/użytkownicy / {1}-memberof?" $top = 999 "-f $graphEndpoint, $userId)
    $membershipQuery = (Wywołaj RequestWithRetry-adres url $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | Gdzie obiekt {$_.creationOptions-zawiera "classAssignments"} | Identyfikator obiektu zaznacz obiekt, displayName
    Zwraca $classes
}

#Return niestandardowy pscutom obiekt, który ma właściwości identyfikator klasy, nazwa użytkownika, nazwa_klasy, ról, getsubmissionprocessed i deletesubmissionprocessed
Funkcja Generate ClassRecord
{
    parametr (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord = [PSCustomObject] @{
        Identyfikator klasy = $classId
        Nazwa użytkownika = $userId
        Nazwa_klasy = $displayName
        Rola = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

Zwraca $classRecord
}

$script: authHeaders = Get-AuthHeaders

Nr to będzie zawierać szczegóły dla wszystkich klas "interesujące"
$script: classDetails = @ {}

# Znajdowanie własnością klas (gdzie użytkownik jest obecnie nauczyciel)
Spróbuj
{
    $ownedClasses = get OwnershipDetails - identyfikator użytkownika $userId
    foreach ($class w $ownedClasses)
    {
        Jeśli (-nie $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generuj ClassRecord - identyfikator użytkownika $userId identyfikator klasy - $class.objectId-$class.displayName - displayName "Nauczyciela" roli
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
efektywnej
{
    Błąd zapisu $_. Exception.Message
}

# Znajdź sprzężone grupy (gdzie użytkownik jest obecnie uczeń)
Spróbuj
{
    $joinedClasses = get MembershipDetails - identyfikator użytkownika $userId
    foreach ($class w $joinedClasses)
    {
        Jeśli (-nie $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Generuj ClassRecord - identyfikator użytkownika $userId identyfikator klasy - $class.objectId-$class.displayName - displayName "Uczniów" roli
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
efektywnej
{
    Błąd zapisu $_. Exception.Message
}

Nr znaleźć szczegółowe informacje dotyczące dodatkowych grup z pliku.
IF(![ ciąg]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = wybierz ciąg — wzór "\w"-$($classIdsFile) ścieżkę | Obiekt ForEach {
        $_. Linia
    }

foreach ($classId w $classIdsFromFile)
    {
        # Lista klasy bieżącego użytkownika ma precendence dodatkowe zestaw klas
        #, to znaczy, jeśli już określiliśmy roli, firma Microsoft nie musisz wykonywać go ponownie.
        Jeśli (-nie $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Spróbuj
            {
                $displayName = Nazwa_klasy get - identyfikator klasy $classId
                $classRecord = Generuj ClassRecord - identyfikator użytkownika $userId - identyfikator/klasy $classId-roli $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            efektywnej
            {
                _ $Hosta zapisu. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Eksportowanie Csv — ścieżka.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Eksportowanie Csv — ścieżka.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (elementu get-ścieżka ". \"-pełne). Imię i nazwisko
Wpisywanie-Host "Szczegóły klasy file($($outputFileName).csv) jest generowany podczas $directoryPath\($($outputFileName).csv)"
Wpisywanie-Host "Klasy szczegóły wygenerowania report(UserClassDetailsReport.csv) na $directoryPath\UserClassDetailsReport.csv"

Rozwijaj umiejętności związane z pakietem Office
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów pakietu Office

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×