共用方式為


使用擴充屬性的 Azure AD Cmdlet

關於擴充屬性

擴充屬性可提供便利的方式,以使用您可用於在目錄中儲存物件屬性值的新屬性來擴充 Azure AD 目錄。 您可以將擴充屬性附加至下列物件類型︰

  • users
  • 租用戶詳細資料
  • devices
  • 應用程式所需

擴充屬性會登錄於開發人員目錄中的應用程式物件。 應用程式經由開發人員目錄中的使用者或系統管理員同意之後,就會將屬性新增至目標目錄類型,並可立即在開發人員的目錄中存取。 在多租用戶的應用程式中,當應用程式獲得另一個組織中的使用者或系統管理員同意時,即可立即在其他組織目錄中的目標目錄類型上存取擴充屬性。

如果組織同意包含已登錄擴充之應用程式的「唯讀」權限,則仍可在其他組織的目錄中存取屬性。 此外,擴充屬性可由組織中任何已獲得同意的應用程式存取,不限於其所登錄的應用程式。 如果該組織中其他已獲得同意的應用程式有足夠的權限,即可讀取或寫入新擴充屬性的值。

如果應用程式遭到刪除或其他組織的目錄已移除同意,便無法在目標目錄物件上存取擴充屬性。 如果擴充已遭應用程式刪除,則也無法在目標目錄物件上進行存取。 如果多租用戶應用程式在獲得同意後新增其他擴充屬性,即可立即在其他組織的目錄中存取這些屬性。

注意

如果在物件上設定擴充屬性的值,而且該屬性在該物件的目錄中變成無法存取,該屬性仍會根據該物件的 100 個擴充屬性值限制計算。 一旦設定屬性值,若要將它從考量中移除,唯一方法就是將它明確地設定為 null。 如果無法存取擴充屬性,您就不能這麼做。

您可以在這篇文章中閱讀有關擴充屬性的詳細資訊。

範例

在這些範例中,我們將使用一個使用者物件並處理擴充屬性。 我們會先尋找使用者的 ObjectId,以便稍後可以輕鬆參考:

$UserId = (Get-AzureADUser -Searchstring <UPN of the user we're working with>).ObjectId 

取得使用者的所有屬性值

(Get-AzureADUser -ObjectId $UserId).ToJson()

取得使用者並顯示所有擴充屬性

Get-AzureADUser -ObjectId $UserId | Select -ExpandProperty ExtensionProperty

此 Cmdlet 會傳回使用者的所有擴充屬性及其目前的值︰

Key                                                                   Value
---                                                                   -----
odata.metadata                                                        https://graph.windows.net/85b5ff1e-0402-400c-9e3c-0f9e965325d1/$metad...
odata.type                                                            Microsoft.DirectoryServices.User
thumbnailPhoto@odata.mediaContentType                                 image/Jpeg
extension_e5e29b8a85d941eab8d12162bd004528_extensionAttribute13       Test 

擷取使用者特定擴充屬性的值

(Get-AzureADUserExtension -ObjectId $UserId).get_item("extension_e5e29b8a85d941eab8d12162bd004528_wWWHomePage")

擷取租用戶中定義的所有擴充屬性

Get-AzureADApplication | Get-AzureADApplicationExtensionProperty 

建立新的擴充屬性

一律會針對特定應用程式建立擴充屬性。 如果您只想將泛型屬性新增至目錄,可以建立預留位置應用程式︰

$MyApp = (New-AzureADApplication -DisplayName "My Properties Bag" -IdentifierUris "https://dummy").ObjectId 

請注意,您必須在目錄中建立此應用程式的服務主體,才能建立新的擴充屬性︰

New-AzureADServicePrincipal -AppId (Get-AzureADApplication -SearchString "My Properties Bag").AppId 

我們現在可以使用此應用程式來建立新的擴充屬性︰

New-AzureADApplicationExtensionProperty -ObjectId $MyApp -Name "MyNewProperty" -DataType "String" -TargetObjects "User" 

此 Cmdlet 順利完成時,它會傳回新的擴充屬性物件︰

ObjectId                             Name                                                     TargetObjects
--------                             ----                                                     -------------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty {User}

注意

新屬性的名稱是從預留位置應用程式的 > 「Extension_」 + < objectID 格式 + 「_」 + < 新屬性 > 的名稱產生。 因此,您建立的不同應用程式會有不同的確切名稱值。 您可以將屬性指派給多個物件類型。 在我們的範例中,只會使用一個 TargetObject ("User"),但您可能也指定了 "User"、"Group",這會將物件同時指派給使用者和群組物件。

設定擴充屬性值

使用我們在前一個範例中使用的擴充屬性,現在即可指派其值︰

Set-AzureADUserExtension -ObjectId $UserId -ExtensionName "extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty" -ExtensionValue "MyNewValue" 

擷取為您的應用程式定義的所有擴充屬性

您可以擷取為應用程式定義的擴充屬性清單:

Get-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectId 

此 Cmdlet 會傳回您應用程式中的擴充屬性清單︰

ObjectId                             Name                                                      TargetObjects
--------                             ----                                                      -------------

aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty  {User}

刪除擴充屬性

如果您不再需要某個擴充屬性,可將它刪除︰

Remove-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectID -ExtensionPropertyId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 

注意

一旦擴充或刪除 ,就不能從 Azure AD 移除 屬性, Tenant Schema Extension App 而不需要向 PayOps 小組提出要求。 此外,從 Azure AD 精靈關閉目錄延伸模組選項並不會移除屬性,或讓您移除應用程式。