使用擴充屬性的 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 精靈關閉目錄延伸模組選項並不會移除屬性,或讓您移除應用程式。