割り当てのスクリプトの取得

注:  最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。 簡単に参照できるように、こちらに 英語の記事 があります。

Get - ユーザー クラス power シェル スクリプトは、接続されています。

< #
   .概要
    ユーザーがメンバーとそのクラス内のユーザーのユーザーの役割とはどのクラスのようには、ユーザーのクラス情報を取得します。
    .説明
    スクリプトのファイルを読み取り、すべてところで、クラス id を取得し、userrole のロール] に記載されているかどうかに記載されている更新が既定では、学生に割り当てます。[取得すると、ユーザーが所有者クラスとクラス ユーザーは、メンバーします。スクリプトが制限し、特定のクラスでクラスの詳細、ユーザーの役割と出力します。
   .例
    .\Get-userClasses.ps1 - ユーザー Id < 特定のユーザー Id >
        これは、ユーザーのメンバーシップによってユーザーの詳細が表示されます
    .\Get-userClasses.ps1 - ユーザー Id < 特定のユーザー Id > classIdsFile < 完全な csv ファイルのパス >
        これは csv ファイルとユーザーのメンバーシップで指定されたクラスのユーザーの詳細を取得する csv ファイルで指定されたところで、クラス Id の既定の学生に割り当てられる userRole パラメーターを渡してしない場合、
    .\Get-userClasses.ps1 - ユーザー Id < 特定のユーザー Id > classIdsFile < 完全な csv ファイルのパス > - userrole < 学生または教師 >
        これにより、csv ファイルとユーザーのメンバーシップで指定されたクラスのユーザーの詳細が表示されます。指定された userrole (教師または学生) によって生成ところで、クラス ファイルで指定された id ユーザー データ
   .パラメーターのユーザー Id
   エクスポートし、送信を削除するユーザーのユーザー Id
   .パラメーター classIdsFile
   各行に 1 つのクラス Id を含むテキスト ファイルへのフル パス。
   ところで、クラス Id のサンプルの一覧です。それぞれの行が 1 つのクラス Id
   e81c2cd2-e3ff-4c0a-8ed0-63df43ff884c
   044b4c35-5fab-454a-9705-bc750108c059
   e81c2cd2-4c0a-e3ff-9705-bc750108c059
   .パラメーター userrole
   この parmeter を使用して、クラスから削除は、クラス id classIdsFile 内に存在するためのユーザーとユーザーの役割を指定します。
   .paramter ファイル
   このパラメーターは拡張子が付いていないのスクリプトの出力ファイルの名前を使用します。これは 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 引数はファイルである必要があります。フォルダーのパスは使用できません。"
        }
        場合 ($_ - 沿って"(\.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 web 出席依頼と返信のステータスをログ
関数呼び出し RequestWithRetry
{
    パラメーター (
        [Parameter(Mandatory=$true)] $url
        [Parameter(Mandatory=$false)] $classId、
        [Parameter(Mandatory=$false)] $className
    )

($i = 1 $i-le $script: maxRetryAttempt; $i + +)
    {
        試して
        {
            $tempResult = 呼び出し WebRequest-取得 Uri $url-ヘッダー $script: authHeaders
            $script: getClassDetailsReport + = [PSCustomObject] @{
                RequestUrl = $url
                メソッドの取得"=
                ResponseCode = $tempResult.StatusCode
                クラス名 = $className
                クラス Id = $classId
                要求 Id $tempResult.Headers ["要求 id"] =
                StatusDescription = $tempResult.StatusDescription
                NumberOfAttempts = $i
            }
            $tempResult を返す
        }
        検出
        {
            if($_.Exception.Response - 新しい $null)
            {
                $responseCode = $_ します。Exception.Response.StatusCode.Value__
                $requestId = $_ します。["要求 id"] Exception.Response.Headers
            }

            $script: getClassDetailsReport + = [PSCustomObject] @{
                RequestUrl = $url
                メソッドの取得"=
                ResponseCode = $responseCode
                クラス名 = $className
                クラス Id = $classId
                要求 Id = $requestId
                StatusDescription = $_ します。Exception.Message
                NumberOfAttempts = $i
            }            

場合 ($i 示します $script: maxRetryAttempt)
            {
                $_ が破棄します。Exception.Message
            }

場合 ($responseCode 示します 401)
            {
                $script: authHeaders = $true を取得する AuthHeaders useRefreshToken
            }
        }
    }
}

#Get、authheaders
Get AuthHeaders 機能
{
    パラメーター (
        [Parameter(Mandatory=$false)]
        ブール値 $useRefreshToken = $false
    )
    $clientId ="eb2298a1-a6bb-4f16-a27a-b582815db47b"
    $redirectURI = 新規オブジェクト System.Uri("urn:ietf:wg:oauth:2.0:oob")
    $promptBehavior = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always
    $authContext = 新規オブジェクト"Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext"られなかった $authString
    場合 ($useRefreshToken 示します $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 です。「コンテンツの種類」="アプリケーション/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 所有権の詳細 edu を使用するユーザー id の割り当てに入力 endpoit 作成絞り込み
Get OwnershipDetails 機能
{
    パラメーター (
        [Parameter(Mandatory=$true)] $userId
    )
    $ownershipUrl = ("{0}/edu/ユーザー/{1}/ownedobjects? ' $top 999 ="-f $graphEndpoint、$userId)
    $ownershipQuery = (呼び出し RequestWithRetry-url $ownershipUrl) |ConvertFrom Json
    $classes = $ownershipQuery.value |Where オブジェクト {$_.creationOptions-"classAssignments"が含まれている} |[オブジェクトのオブジェクト Id、displayName
    $classes を返す
}

#Get メンバーシップの詳細 edu を使用するユーザー id の割り当てに入力エンドポイントの作成の絞り込み
Get MembershipDetails 機能
{
    パラメーター (
        [Parameter(Mandatory=$true)] $userId
    )
    $membershipUrl = ("{0}/edu/ユーザー/{1}/memberof? ' $top 999 ="-f $graphEndpoint、$userId)
    $membershipQuery = (呼び出し RequestWithRetry-url $membershipUrl) |ConvertFrom Json
    $classes = $membershipQuery.value |Where オブジェクト {$_.creationOptions-"classAssignments"が含まれている} |[オブジェクトのオブジェクト Id、displayName
    $classes を返す
}

クラス id、ユーザー id、クラス名、役割、getsubmissionprocessed および deletesubmissionprocessed のプロパティを持つ #Return カスタム pscutom オブジェクト
機能の生成 ClassRecord
{
    パラメーター (
        [Parameter(Mandatory=$true)] $userId、
        [Parameter(Mandatory=$true)] $classId、
        [Parameter(Mandatory=$true)] $role、
        [Parameter(Mandatory=$false)] $displayName
    )

$classRecord [PSCustomObject] = @{
        クラス Id = $classId
        ユーザー Id = $userId
        クラス名 = $displayName
        役割 = $role
        GetSubmissionsProcessed = $false
        DeleteSubmissionsProcessed = $false
    }

$classRecord を返す
}

$script: authHeaders = Get AuthHeaders

#「興味のある」すべてのクラスの詳細が含まれてこの
$script: classDetails = @ {}

# 検索 (ユーザーは、現在教師) クラスを所有している
試して
{
    $ownedClasses $userId を取得する OwnershipDetails ユーザー Id を =
    foreach ($ownedClasses で $class)
    {
        場合 (のない $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = 生成 ClassRecord-ユーザー Id $userId - クラス Id $class.objectId-役割「教師」の displayName $class.displayName
            ($class.objectId、$classRecord) $script:classDetails.Add
        }
    }
}
検出
{
    書き込みエラー $ _ します。Exception.Message
}

番号の検索は、(ユーザーは、現在学生) をグループに参加
試して
{
    $joinedClasses $userId を取得する MembershipDetails ユーザー Id を =
    foreach ($joinedClasses で $class)
    {
        場合 (のない $script: classDetails.ContainsKey($class.objectId))
        {
            $classRecord = 生成 ClassRecord-ユーザー Id $userId - クラス Id $class.objectId-役割「学生」の displayName $class.displayName
            ($class.objectId、$classRecord) $script:classDetails.Add
        }
    }
}
検出
{
    書き込みエラー $ _ します。Exception.Message
}

# ファイルから他のグループの詳細情報を検索します。
if(![[文字列]: IsNullOrEmpty($classIdsFile))
{
    $classIdsFromFile = 選択文字列のパターン"\w"-パス $($classIdsFile) |Foreach-object {
        $_.行
    }

foreach ($classIdsFromFile で $classId)
    {
        番号ユーザーの現在のクラスのリストを引き継ぎます precendence クラスの追加のセット
        つまり、既にこの役割を確認したところしたものである場合は、#、もう一度実行して必要はありません。
        場合 (のない $script: classDetails.ContainsKey($classId.Trim("")))
        {
            試して
            {
                $displayName $classId を取得するクラス名のクラス Id =
                $classRecord = 生成 ClassRecord-ユーザー Id $userId - クラス Id $classId-$userrole の役割の displayName $displayName
                ($classId、$classRecord) $script:classDetails.Add
            }
            検出
            {
                書き込みホスト $ _ します。Exception.Message
            }

        }
    }
}            

$script:classDetails.Values |エクスポート Csv-パス.\$($outputFileName).csv - NoTypeInformation
$script: getClassDetailsReport |エクスポート Csv-パス.\UserClassDetailsReport.csv - NoTypeInformation
$directoryPath = (get アイテムのパス". \"-詳細)。フルネーム
書き込みホスト「file($($outputFileName).csv) が $directoryPath\($($outputFileName).csv) で生成されたクラスの詳細」
書き込みホスト「クラスの詳細を $directoryPath\UserClassDetailsReport.csv で report(UserClassDetailsReport.csv) が生成される」

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×