Tehtävät-komentosarjat - hankkiminen

Huomautus: Microsoft haluaa tarjota sinulle ajantasaisinta ohjesisältöä mahdollisimman nopeasti omalla kielelläsi. Tämä sivu on käännetty automaation avulla, ja siinä saattaa olla kielioppivirheitä tai epätarkkuuksia. Tarkoitus on, että sisällöstä on sinulle hyötyä. Kertoisitko sivun alareunassa olevan toiminnon avulla, oliko tiedoista hyötyä? Tästä pääset helposti artikkelin englanninkieliseen versioon.

Liitetty power shell-komentosarjoja koskevat Get - käyttäjä

< #
   . Yhteenvedon
    Hae luokkien käyttäjätiedot, kuten mitkä luokissa käyttäjä on jäsen ja mikä on näiden luokkien käyttäjän roolia.
    . KUVAUS
    Komentosarjojen lukee tiedoston ja poistaa kaikki classids ja päivitykset userrole rooleihin mainituista, jos ei ole mainittu Määritä opiskelijoiden, joka on oletusarvo. Valitse se saa luokat, jossa käyttäjä on omistaja ja luokat kohtaa, johon käyttäjä kuuluu. Komentosarjan parantaa siirtymästä ja Luo luokan tiedot ja käyttäjän roolia tulosteen tiettyyn luokkaan.
   . Esimerkki
    .\Get-userClasses.ps1 - käyttäjätunnus < tietyn käyttäjätunnus >
        Tämä saavat käyttäjän jäsenyyden mukaan käyttäjätiedot
    .\Get-userClasses.ps1 - käyttäjätunnus < tietyn käyttäjän tunnus > - classIdsFile < valmis csv-tiedostopolku >
        Tämä saavat käyttäjätiedot luokkien csv-tiedosto ja käyttäjän jäsenyys-parametrissa on eivät läpäise userRole parametri, jos se määritetään Student oletusarvo-parametrissa csv-tiedoston classIds
    .\Get-userClasses.ps1 - käyttäjätunnus < tietyn käyttäjän tunnus > - classIdsFile < valmis csv-tiedostopolku > - userrole < Lisäopiskelija tai opettaja >
        Tämä saavat luokkien csv-tiedosto ja käyttäjän jäsenyys-parametrissa käyttäjätiedot. Määritetyn tiedoston classids käyttäjätiedot muodostetaan määritetty userrole (opettaja tai Opiskelijan) mukaan
   . Parametrin käyttäjätunnus
   Käyttäjän käyttäjätunnus ja poista lähetysten
   . Parametrin classIdsFile
   Vain teksti-tiedosto, jossa on yksi classId kullakin rivillä koko polku.
   Esimerkki classIds luettelo. Kunkin rivin pitäisi olla yksittäinen classId
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parametrin userrole
   Tämä parmeter käytetään Määritä rooli, jota käytetään esitä classIdsFile luokkatunnukset käyttäjä ja poistetaan luokka.
   .paramter Tulostetiedoston_nimi
   Tämä parametri käytetään nimi kohdetiedosto komentosarja, ei ole laajennuksia. Tämä ei ole mandatorty tulosteen tiedostonimi on oletusarvon mukaan UserClassDetails
   . Muistiinpanojen
   Microsoft.IdentityModel.Clients.ActiveDirectory.dll on annettava ja Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll tarvittavat
#>
parametri (
    [Parametrin (pakollinen = $true, sijainnin = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Kokeile {
            [System.Guid]::Parse($_) | Vanhenee Null
            $true
        } todellisen {
            Palauttaa $_
        }
    })]
    merkkijono $userId,

[parametrin (pakollinen = $false, sijainnin = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        Jos (-ei ($_ | Test-Path)) {
            palauttaa ”tiedostoa tai kansiota ei ole”
        }
        Jos (-ei ($_ | Test-Path - PathType lehdet)) {
            Palauttaa ”classIdsFile-argumentin on oltava tiedoston. Kansion polut ei sallita ”.
        }
        Jos ($_ - notmatch ”(\.txt)”) {
            Palauttaa ”polku-argumentin määritetyn tiedoston on oltava tyyppi txt”
        }
        Palauttaa $true
    })]
    merkkijono $classIdsFile,

[Parametrin (pakollinen = $false, sijainnin = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ('Opiskelija', 'Opettajan ”ohitaKoko = $false)]
    merkkijonon $userrole = ”opiskelijoiden”

[parametrin (pakollinen = $false, sijainnin = 4)]
    [ValidateNotNullOrEmpty()]
    merkkijonon $outputFileName = ”UserClassDetails”
)
# Ladata ADAL
Lisää tyyppi-polku ”.\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll”

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

# Tulos yhteenveto success/virheen API kutsuja.
$script: getClassDetailsReport = @)

#Makes web-pyynnön ja vastauksen tila kirjautuu
toimi Käynnistä RequestWithRetry
{
    parametri (
        Parameter(Mandatory=$true) $url,
        Parameter(Mandatory=$false) $classId,
        Parameter(Mandatory=$false) $className
    )

($i = 1; $i-tiedostoon $script: maxRetryAttempt; $i ++)
    {
        Kokeile
        {
            $tempResult = Käynnistä WebRequest-$url menetelmä Hanki - Uri-otsikoiden $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = ”Hanki-
                ResponseCode = $tempResult.StatusCode
                LuokanNimi = $className
                ClassId = $classId
                Pyyntötunnus $tempResult.Headers [”pyynnön-tunnus”] =
                TilanKuvaus = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            Palauttaa $tempResult
        }
        todellisen
        {
            IF($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. Exception.Response.Headers [”pyynnön-tunnus”]
            }

            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl = $url
                Menetelmä = ”Hanki-
                ResponseCode = $responseCode
                LuokanNimi = $className
                ClassId = $classId
                Pyyntötunnus = $requestId
                TilanKuvaus = $_. Exception.Message
                NumberOfAttempts = $i
            }            

Jos ($i - eq $script: maxRetryAttempt)
            {
                Palauttaa $_. Exception.Message
            }

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

#Get authheaders
toimi Get-AuthHeaders
{
    Parametri (
        [Parameter(Mandatory=$false)]
        bool $useRefreshToken = $false
    )
    $clientId = ”eb2298a1-a6bb-4f16-a27a-b582815db47b”
    $redirectURI = uusi objektin System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = uusi objekti ”Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext” - ArgumentList $authString
    Jos ($useRefreshToken - eq $false)
    {
        $script: authenticationResult = $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior)
    }
    muita
    {
        $script: authenticationResult = $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId)
    }
    $authHeader = $script:authenticationResult.AccessTokenType + ”” + $script:authenticationResult.AccessToken
    $headers = @{”lupa” = $authHeader; ”Sisältötyypin” = ”sovelluksen/json”}
    Palauttaa $headers
}

Ryhmän nimi #Get
toimi Get LuokanNimi
{
    parametri (
        Parameter(Mandatory=$true) $classId
    )

$getClassDetailsUrl = ”{0}/v1.0/groups/{1}” -f $graphEndpoint, $classId
    $getClassDetailsResult = (Käynnistä RequestWithRetry-URL-osoite $getClassDetailsUrl) | ConvertFrom Json
    $className = $getclassDetailsResult.displayName
    Palauttaa $className
}

Käyttäjätunnus käyttämällä edu #Get omistajuus tietoja endpoit ja Tarkenna luomisen kirjoittamalla varauksiin
toimi Get-OwnershipDetails
{
    parametri (
        Parameter(Mandatory=$true) $userId
    )
    $ownershipUrl = (”{0} / edu/käyttäjät / {1} / ownedobjects?” $top = 999 ”-f $graphEndpoint, $userId)
    $ownershipQuery = (Käynnistä RequestWithRetry-URL-osoite $ownershipUrl) | ConvertFrom Json
    $classes = $ownershipQuery.value | WHERE-objektin {$_.creationOptions-sisältää ”classAssignments”} | Valitse objektin objektitunnus, näyttönimi
    Palauttaa $classes
}

#Get käyttämällä edu käyttäjätunnus jäsenyyden tietoja päätepiste ja Tarkenna luomisen kirjoittamalla varauksiin
toimi Get-MembershipDetails
{
    parametri (
        Parameter(Mandatory=$true) $userId
    )
    $membershipUrl = (”{0} / edu/käyttäjät / {1} / memberof?” $top = 999 ”-f $graphEndpoint, $userId)
    $membershipQuery = (Käynnistä RequestWithRetry-URL-osoite $membershipUrl) | ConvertFrom Json
    $classes = $membershipQuery.value | WHERE-objektin {$_.creationOptions-sisältää ”classAssignments”} | Valitse objektin objektitunnus, näyttönimi
    Palauttaa $classes
}

#Return mukautetun pscutom objekti, joka on classid, käyttäjätunnus, LuokanNimi, rooli, getsubmissionprocessed ja deletesubmissionprocessed ominaisuudet
toimi luo ClassRecord
{
    parametri (
        Parameter(Mandatory=$true) $userId,
        Parameter(Mandatory=$true) $classId,
        Parameter(Mandatory=$true) $role,
        Parameter(Mandatory=$false) $displayName
    )

$classRecord = [PSCustomObject] @{
        ClassId = $classId
        Käyttäjätunnus = $userId
        LuokanNimi = $displayName
        Rooli = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

Palauttaa $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Tämä sisältää kaikkien ”kiinnostavat” luokkien tietoja
$script: classDetails = @ {}

# Etsi omistaa luokat (käyttäjä on tällä hetkellä käyttämällä opettaja)
Kokeile
{
    $ownedClasses = get-OwnershipDetails - käyttäjätunnus $userId
    foreach ($class $ownedClasses)
    {
        Jos (-ei $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Luo ClassRecord - käyttäjätunnus $userId - classId $class.objectId-roolin ”opettajan” - näyttönimi $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
todellisen
{
    Kirjoitusvirhe $_. Exception.Message
}

# Etsi liittyneet ryhmät (käyttäjä on tällä hetkellä opiskelija)
Kokeile
{
    $joinedClasses = get-MembershipDetails - käyttäjätunnus $userId
    foreach ($class $joinedClasses)
    {
        Jos (-ei $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = Luo ClassRecord - käyttäjätunnus $userId - classId $class.objectId-roolin ”opiskelijoiden” - näyttönimi $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
todellisen
{
    Kirjoitusvirhe $_. Exception.Message
}

# Tietoja datatiedostosta, lisää ryhmiä.
IF(![ merkkijono]: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = Valitse merkkijono-kuvion ”\w”-polku $($classIdsFile) | ForEach objektin {
        $_. Rivin
    }

foreach ($classId $classIdsFromFile)
    {
        # Käyttäjän nykyinen luokkien luetteloon ohittaa precendence luokkia muita joukko
        # eli, jos Microsoft on jo määritetty rooli, Microsoft ei tarvitse tehdä uudelleen.
        Jos (-ei $script: classDetails.ContainsKey($classId.Trim("")))
        {
            Kokeile
            {
                $displayName = get-LuokanNimi - classId $classId
                $classRecord = Luo ClassRecord - käyttäjätunnus $userId - classId $classId-roolin $userrole - näyttönimi $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            todellisen
            {
                Kirjoita isäntänimi $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Vie Csv-polku.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Vie Csv-polku.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (Hae kohde-polku ”. \”-yksityiskohtainen). Nimi
Kirjoita-Host ”luokan tiedot file($($outputFileName).csv) luodaan $directoryPath\($($outputFileName).csv) osoitteessa”
Kirjoita-Host ”luokan tiedot report(UserClassDetailsReport.csv) luodaan osoitteessa $directoryPath\UserClassDetailsReport.csv”

Kehitä Office-taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×