2016-09-21 35 views
0

私は、PowerShellオートメーションを使用して、社内のAD、オンプレミスExchange、Azure AD、およびO365のユーザーを作成して修正し、HRによって提供されるレコードと一致するDotNet Formsアプリケーションを作成しました。これは、数年間、顧客によって使用されており、うまく動作します。azure AD powerShell編集マネージャー

このコードでは、Windows PowerShell用のAzure Active Directoryモジュール(MSOnline-MSOL)を使用してAzure ADでユーザーを表示および編集しています。

は、私は、ユーザーのタイトルを変更するには、次のPowerShellを使用したいたとえば(http://social.technet.microsoft.com/wiki/contents/articles/28552.microsoft-azure-active-directory-powershell-module-version-release-history.aspxを参照してください)私はもともとMSOLバージョン8073.4を使用しますが、私はMSOLバージョン1.1.166.0 にアップグレードしたので、:

Import-Module MSOnline 
$Cred = Get-Credential 
Connect-MSOLService -Credential $Cred 
Set-MSOLUser -UserPrincipalName [email protected] -Title 'Deliverer of presents' 

すべてAzureの各ADユーザーの「マネージャーID」属性を更新するようにコードを拡張するように要求されるまでは問題ありませんでした。簡単に私は思った!タイトルを更新するのと全く同じように、ユーザーの「マネージャID」フィールド(マネージャのAzure ADアカウントのObjectID)を更新する必要があります。

Er、no。マネージャーフィールドを変更する方法が見つかりません。私はMSDNのドキュメントを何度も繰り返してきましたが、これを行う方法は見つかりません:

私は、上記のリリース履歴URLに記載されている瞬間プレビュー版の新しいv2 Azure ADモジュールを見て、 PowerShellギャラリー(「AzureADPreview」を検索)からダウンロードできます。 これらは最終的に古いMSOLコマンドレットを置き換え、既存のAzure PowerShellモジュール(VMの作成など)とよく似ています。 このコマンド

Set-AzureADUserManager 

を介してユーザの「管理者ID」を設定するためのサポートを提供し、私はこれを試したし、それが動作するので、私は私が代わりに新しいv2のAPIを使用するために自分のアプリケーションを更新しようと思いましたv1 API(MSOL)

は、残念ながら、私は(役職などの属性を設定するために使用)

Set-AzureADUser 

コマンドが完全v2.0.0.1に壊れていることが判明し、

「例外がされているエラーで失敗します呼び出しのターゲットによってスローされる "

私が試した任意の組み合わせ私はこれをPowerShellギャラリー経由で開発者に報告しました。

幸運にも、これらのモジュールの以前のバージョン1.1.167.0が正常に動作しているので、私はそのバージョンを使用しており、ユーザーの作成、ユーザーの変更、ユーザーの「マネージャーID」の構成ができます。ライセンスを設定してください(例:O365_BUSINESS_PREMIUM)。 Set-AzureADUserLicenseコマンドのドキュメントはほとんど存在せず、私はそれをどのように使用するかを考え出すことができませんでした。

私は、次の操作を実行する必要があると思う:

# Create an object which contains the individual license 'x' I want to add 
# The available license SkuIDs can be read from Get-AzureADSubscribedSku 
$MySingleLicenseToAdd = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense 
$MySingleLicenseToAdd.SkuID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 

# Create a licenses object which is assigned the individual licenses I want to add or remove 
$MyLicensesToAddOrRemove = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses 
$MyLicensesToAddOrRemove.AddLicenses = $MySingleLicenseToAdd 
$MyLicensesToAddOrRemove.RemoveLicenses = $Null 

# Perform the license action against the specified user 'y' 
Set-AzureADUserLicense -ObjectId 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyy' -AssignedLicenses $MyLicensesToAddOrRemove 

が、それは「SKUIDは」読み取り専用フィールドであることを言って、コードの2行目に失敗しました。

したがって、ユーザーの「マネージャーID」フィールドを更新する方法が見つからないため、V1(MSOL)APIを使用できません。 ライセンスを割り当てる方法が見つからないため、V2 APIを使用できません(ライブで使用することはできません)

私の現在の計画はV1 APIを使用することですが、 V2 APIを使用して「マネージャID」フィールドのみを更新しますが、理想的な解決策ではありません(2つの異なるAPIを使用してAzureに2回署名します)。

  1. 私の好みは、 「マネージャID」フィールドを更新するためにv1(MSOL)APIを使用することです。
  2. 私の第2の好みは、v2 APIを使用し、ライセンスを割り当てる方法を学ぶことです。
  3. 私の第三の好みは何かである。)

私が直接REST APIを使用して約記事を読みましたが、それはWAY重かったと私は、可能な場合のAzure PowerShellのAPIを回避し、固執することを好むだろう。

looooongの質問について申し訳ありませんが、私はV2 APIを使用しようとしている理由についていくつかの文脈を提供しようとしていました。

更新(23/09/2016):

AzureADPreview 2.0.0.2がリリースされたばかりの、それはセットAzureADUserに問題を修正:)残念ながら、部分的にセットAzureADUserManagerを壊した:(この新しいバージョンここで

答えて

0

返信ありがとうございます。ロブ。

あなたが提供したコードは、既存のユーザーからSkuIDを取得することを除いて、私が試していたものと同じです(オリジナルの質問のコードを参照してください)。

2つの新しいバージョンのAzureADPreviewがリリースされて以来(2.0.0.7および2.0.0.17)、AzureADPreviewの新しいバージョンと元々投稿されたときに利用可能だったオリジナルのバージョンを試してみました。

2.0.0.1は:動作しません、次のように

私の結果です。読み取り専用エラー。

2.0.0.2:機能しません。読み取り専用エラー。

2.0.0.7は:

2.0.0.17作品:だから、基本的に

ワークス、それを固定しているので、AzureADPreviewが、マイクロソフトの元のバージョンでのせいでした。

すべての作業が完了しました。

+0

答えとして「ありがとうございます」を追加しないでください。代わりに、**あなたが最も役に立つと思った** [回答を受け入れる](http://stackoverflow.com/help/accepted-answer)**。 - [レビューから](/レビュー/低品質の投稿/ 14240288) –

+0

これは間違いでした。私はコメントが何をしたのか分からなかった(Stack Overflowへの初心者)がコメントを削除します。ロブは私が試したのとまったく同じコードを提供しただけなので(私の質問に答えなかったので)何を受け入れるのか分かりませんでした。私はその修正が実際に新しい2.0.0.7バージョンに入っていることを発見しました。だから私自身の答えは正しい答えのようなものです。私は自分自身に答えを与えることはできますか(それは受け入れられるのですか?) –

+0

あなたが書き留めた答えがあなたが問題を解決した方法であれば、完全に許容されます。 –

0

とのライセンスを持つ

同じ問題は、ユーザーのライセンスを設定するには、Set-AzureADuserLicenseコマンドレットを使用する方法の一例である。

これが明らかになった場合はお知らせください。

# Get the License SkuId from a template user that we want to apply to the new user 
$licensedUser = Get-AzureADUser -ObjectId "[email protected]" 
# Get the new User we want to apply the license too 
$user = Get-AzureADUser -ObjectId "[email protected]" 
# Create the new License object 
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense 
$license.SkuId = $licensedUser.AssignedLicenses.SkuId 
# Create the Licenses Table and add the license from above 
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses 
$licenses.AddLicenses = $license 
# Apply the license to the new user 
Set-AzureADUserLicense -ObjectId $user.ObjectId -AssignedLicenses $licenses