Atamaları betikleri - alın

Not:  En güncel yardım içeriklerini, mümkün olduğunca hızlı biçimde kendi dilinizde size sunmak için çalışıyoruz. Bu sayfanın çevirisi otomasyon aracılığıyla yapılmıştır ve bu nedenle hatalı veya yanlış dil bilgisi kullanımları içerebilir. Amacımız, bu içeriğin sizin için faydalı olabilmesini sağlamaktır. Buradaki bilgilerin faydalı olup olmadığını bu sayfanın sonunda bize bildirebilir misiniz? Kolayca başvurabilmek için İngilizce makaleye buradan ulaşabilirsiniz .

Ekli power Kabuk komut Get - kullanıcı sınıflar içeren

< #
   . Doğrulanır
    Hangi sınıflarında kullanıcının üyesi ve bu sınıflarında kullanıcının kullanıcı rolü nedir like kullanıcı sınıflar bilgi alın.
    . Açıklama
    Komut dosyasını okur ve tüm IPCONFIG alın ve varsayılan değer olan Öğrenci userrole rolle sözü edilen değilse sözü edilen güncelleştirmeleri atayın. Sonra kullanıcının sahip olduğu sınıflar ve sınıflar kullanıcının üyesi olduğu alır. Komut dosyası iyileştirir ve belirli sınıfta sınıf ayrıntıları ve kullanıcının rolünü çıktı oluşturur.
   . Örnek
    .\Get-userClasses.ps1 - kullanıcı kimliği < belirli bir kullanıcı kimliği >
        Bu kullanıcının üyelik göre kullanıcı ayrıntıları alırsınız
    .\Get-userClasses.ps1 - kullanıcı kimliği < belirli bir kullanıcı kimliği > - classIdsFile < tam csv dosya yolu >
        Bu csv dosyası ve kullanıcı üyeliği belirtilen sınıflar kullanıcı ayrıntılarını alırsınız biz userRole parametre yoksa geçerseniz, bunun için csv dosyası olarak belirtilen IPCONFIG Öğrenci varsayılan atanacak
    .\Get-userClasses.ps1 - kullanıcı kimliği < belirli bir kullanıcı kimliği > - classIdsFile < tam csv dosya yolu > - userrole < Öğrenci veya öğretmen >
        Bu csv dosyası ve kullanıcı üyeliği belirtilen sınıflar kullanıcı ayrıntılarını elde edersiniz. Dosyada belirtilen IPCONFIG için kullanıcı verileri belirtilen userrole göre (Öğretmen veya Öğrenci) oluşturulur
   . Parametre kullanıcı kimliği
   Dışarı aktarma ve gönderimler silmek için kullanıcının kullanıcı kimliği
   . Parametre classIdsFile
   Her satırda tek bir sınıf kodu içeren bir düz metin dosyasının tam yolu.
   Örnek ClassID listesi. Her satır tek sınıf kodu olacağını
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   . Parametre userrole
   Bu parmeter içinde classIdsFile Sun sınıf kimlikleri için kullanılacak kullanıcı ve kullanıcı rolü sınıf kaldırılır belirtmek için kullanılır.
   .paramter çıkışdosyaadı
   Bu parametre, çıkış dosyası komut uzantısız ad vermek için kullanılır. Bu mandatorty değil varsayılan olarak çıktı dosya UserClassDetails adıdır
   . Notları
   Biz Microsoft.IdentityModel.Clients.ActiveDirectory.dll olması gerekir ve Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll gerekli
#>
parametre (
    [Parametre (zorunlu $true, konum = = 1)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        deneyin {
            [System.Guid]::Parse($_) | Dışarı Null
            $true
        } yakalamasını {
            Durum $_
        }
    })]
    [dize] $userId,

[parametre (zorunlu $false, konum = = 2)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript ({
        varsa (-değil ($_ | Test-Path)) {
            "dosya veya klasörü yok" durum
        }
        varsa (-değil ($_ | Test-Path - PathType yaprak)) {
            Durum "classIdsFile bağımsız değişkeni bir dosya olmalıdır. Klasör yolları izin verilmez."
        }
        varsa ($_ - notmatch "(\.txt)") {
            "yol değişkeninde belirtilen dosya türü txt olmalıdır" durum
        }
        dönüş $true
    })]
    [dize] $classIdsFile,

[Parametre (zorunlu $false, konum = = 3)]
    [ValidateNotNullOrEmpty()]
    [ValidateSet ('Öğrenci', 'Öğretmen' ignorecase $false =)]
    [dize] $userrole = "Öğrenci"

[parametre (zorunlu $false, konum = = 4)]
    [ValidateNotNullOrEmpty()]
    [dize] $outputFileName "UserClassDetails" =
)
# Yükleme ADAL
Türü Ekle-yol ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

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

# Başarı/başarısızlık API çağrılarının özetlemek için çıktı.
$script: getClassDetailsReport = @)

#Makes web isteği ve yanıt durumu günlükler
Çağır RequestWithRetry işlevi
{
    parametre (
        [Parameter(Mandatory=$true)] $url,
        [Parameter(Mandatory=$false)] $classId,
        [Parameter(Mandatory=$false)] $className
    )

için ($i = 1; $i-le $script: maxRetryAttempt; $i ++)
    {
        deneyin
        {
            $tempResult Çağır WebRequest =-$url yöntemi Get - URI-üstbilgileri $script: authHeaders
            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl $url =
                Yöntem "Alma" =
                Yanıt kodu $tempResult.StatusCode =
                SınıfAdı $className =
                Sınıf kodu $classId =
                İstekKimliği $tempResult.Headers ["kimliği isteği"] =
                StatusDescription $tempResult.StatusDescription =
                NumberOfAttempts $i =
            }
            dönüş $tempResult
        }
        Fiili
        {
            if($_. Exception.Response - ne $null)
            {
                $responseCode = $_. Exception.Response.StatusCode.Value__
                $requestId = $_. ["Kimliği isteği"] Exception.Response.Headers
            }

            $script: getClassDetailsReport += [PSCustomObject] @{
                RequestUrl $url =
                Yöntem "Alma" =
                Yanıt kodu $responseCode =
                SınıfAdı $className =
                Sınıf kodu $classId =
                İstekKimliği $requestId =
                StatusDescription = $_. Exception.Message
                NumberOfAttempts $i =
            }            

varsa ($i - eq $script: maxRetryAttempt)
            {
                $_ atar. Exception.Message
            }

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

#Get authheaders
Get-AuthHeaders işlevi
{
    Parametre (
        [Parameter(Mandatory=$false)]
        [bool] $useRefreshToken $false =
    )
    $clientId "eb2298a1-a6bb-4f16-a27a-b582815db47b" =
    $redirectURI yeni nesne System.Uri("urn:ietf:wg:oauth:2.0:oob") =
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext yeni nesneyi "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" - bağımsızdeğişkenListesi $authString =
    varsa ($useRefreshToken - eq $false)
    {
        $script: authenticationResult $authContext.AcquireToken ($graphEndpoint, $clientID, $redirectURI, $promptBehavior) =
    }
    başka
    {
        $script: authenticationResult $authContext.AcquireTokenByRefreshToken ($script:authenticationResult.RefreshToken, $clientId) =
    }
    $authHeader $script:authenticationResult.AccessTokenType = + "" + $script:authenticationResult.AccessToken
    $headers = @{"Yetkilendirme" = $authHeader; "İçerik türü" = "Uygulama/json"}
    dönüş $headers
}

Grup adı #Get
Get-SınıfAdı işlevi
{
    parametre (
        [Parameter(Mandatory=$true)] $classId
    )

$getClassDetailsUrl "{0}/v1.0/groups/{1}" = -f $graphEndpoint, $classId
    $getClassDetailsResult = (Çağır RequestWithRetry-url $getClassDetailsUrl) | ConvertFrom Json
    $className $getclassDetailsResult.displayName =
    dönüş $className
}

Kullanıcı kimliği kullanarak eğitim #Get sahipliğini ayrıntılarını endpoit ve İyileştir değeriyle oluşturulması yazın atamalarına
Get-OwnershipDetails işlevi
{
    parametre (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0} / eğitim/kullanıcılar / {1} / ownedobjects?'$top 999 =" -f $graphEndpoint, $userId)
    $ownershipQuery = (Çağır RequestWithRetry-url $ownershipUrl) | ConvertFrom Json
    $classes $ownershipQuery.value = | Nereden nesne {$_.creationOptions-içeren "classAssignments"} | Nesne Seç nesne kimliği, displayName
    dönüş $classes
}

#Get eğitim kullanarak kullanıcı kimliği üyelik ayrıntılarını uç noktası ve İyileştir değeriyle oluşturulması yazın atamalarına
Get-MembershipDetails işlevi
{
    parametre (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0} / eğitim/kullanıcılar / {1} / memberof?'$top 999 =" -f $graphEndpoint, $userId)
    $membershipQuery = (Çağır RequestWithRetry-url $membershipUrl) | ConvertFrom Json
    $classes $membershipQuery.value = | Nereden nesne {$_.creationOptions-içeren "classAssignments"} | Nesne Seç nesne kimliği, displayName
    dönüş $classes
}

Sınıf kodu, kullanıcı kimliği, SınıfAdı, rol, getsubmissionprocessed ve deletesubmissionprocessed özellikleri olan #Return özel pscutom nesne
Oluştur'u ClassRecord işlevi
{
    parametre (
        [Parameter(Mandatory=$true)] $userId,
        [Parameter(Mandatory=$true)] $classId,
        [Parameter(Mandatory=$true)] $role,
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord [PSCustomObject] = @{
        Sınıf kodu $classId =
        Kullanıcı Kimliği $userId =
        SınıfAdı $displayName =
        Rol $role =
        GetSubmissionsProcessed $false =
        DeleteSubmissionsProcessed $false =
    }

dönüş $classRecord
}

$script: authHeaders = Get-AuthHeaders

# Bu tüm "ilginç" sınıf için ayrıntıları içerecek
$script: classDetails = @ {}

# Bul sınıflar (kullanıcı nerede şu anda bir Öğretmen) ait
deneyin
{
    $ownedClasses = get-OwnershipDetails - kullanıcı kimliği $userId
    foreach ($class $ownedClasses içinde)
    {
        varsa (-değil $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord ClassRecord Oluştur'u - kullanıcı kimliği $userId - sınıf kodu $class.objectId =-rol "Öğretmen" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
Fiili
{
    Yazma hatası $_. Exception.Message
}

# Bul birleştirilen grupları (kullanıcı şu anda bir öğrenci nerede)
deneyin
{
    $joinedClasses = get-MembershipDetails - kullanıcı kimliği $userId
    foreach ($class $joinedClasses içinde)
    {
        varsa (-değil $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord ClassRecord Oluştur'u - kullanıcı kimliği $userId - sınıf kodu $class.objectId =-rol "Öğrenci" - displayName $class.displayName
            $script:classDetails.Add ($class.objectId, $classRecord)
        }
    }
}
Fiili
{
    Yazma hatası $_. Exception.Message
}

# Dosyayı ek gruplarından ayrıntıları bulun.
if(![ dize]:: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = seçin dize-desen "\w"-yol $($classIdsFile) | Nesne ForEach {
        $_. Çizgi
    }

foreach ($classId $classIdsFromFile içinde)
    {
        # Ek sınıflar kümesi üzerinde kullanıcının geçerli sınıflar listesini alır precendence
        # yani biz zaten rolün belirledikten, biz yeniden yapmanız gerekmez.
        varsa (-değil $script: classDetails.ContainsKey($classId.Trim("")))
        {
            deneyin
            {
                $displayName = get-SınıfAdı - sınıf kodu $classId
                $classRecord ClassRecord Oluştur'u - kullanıcı kimliği $userId - sınıf kodu $classId =-rol $userrole - displayName $displayName
                $script:classDetails.Add ($classId, $classRecord)
            }
            Fiili
            {
                Yazma ana $_. Exception.Message
            }

        }
    }
}            

$script:classDetails.Values | Dışarı aktarma Csv-yol.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport | Dışarı aktarma Csv-yol.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (öğe get-yol ". \"-ayrıntılı). Tam
Yazma ana bilgisayar "file($($outputFileName).csv) $directoryPath\($($outputFileName).csv) oluşturulan sınıf Ayrıntıları"
Yazma ana bilgisayar "report(UserClassDetailsReport.csv) $directoryPath\UserClassDetailsReport.csv oluşturulan sınıf Ayrıntıları"

Office yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Office Insider Programına Katılın

Bu bilgi yararlı oldu mu?

Görüşleriniz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×