New-EntraApplication
在 Microsoft Entra ID 中建立新的應用程式註冊。
語法
CreateApplication (預設值)
New-EntraApplication
-DisplayName <String>
[-SignInAudience <String>]
[-IdentifierUris <List[String]>]
[-IsDeviceOnlyAuthSupported <Boolean>]
[-IsFallbackPublicClient <Boolean>]
[-AppRoles <List[MicrosoftGraphAppRole]>]
[-RequiredResourceAccess <MicrosoftGraphRequiredResourceAccess[]>]
[-Api <MicrosoftGraphApiApplication>]
[-PublicClient <MicrosoftGraphPublicClientApplication>]
[-Web <MicrosoftGraphWebApplication>]
[-InformationalUrl <MicrosoftGraphInformationalUrl>]
[-ParentalControlSettings <MicrosoftGraphParentalControlSettings>]
[-OptionalClaims <MicrosoftGraphOptionalClaims>]
[-AddIns <Object[]>]
[-KeyCredentials <Object[]>]
[-PasswordCredentials <MicrosoftGraphPasswordCredential[]>]
[-Tags <List[String]>]
[-GroupMembershipClaims <String>]
[-TokenEncryptionKeyId <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
CreateWithAdditionalProperties
New-EntraApplication
-AdditionalProperties <Hashtable>
[-DisplayName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
該指令小程式會在 New-EntraApplication Microsoft Entra ID 中建立新的應用程式註冊。 應用程式可設定為不同認證情境,包括單租戶或多租戶,並可使用多種憑證類型。
範例
範例 1:建立一個基本應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso HR App'
DisplayName Id AppId SignInAudience PublisherDomain
----------- -- ----- -------------- ---------------
Contoso HR Onboarding App dddd3333-ee44-5555-66ff-777777aaaaaa 22223333-cccc-4444-dddd-5555eeee6666 AzureADMyOrg contoso.com
此指令建立一個基本的應用程式註冊,並設定為預設。
範例 2:建立多租戶應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso Partner API' -SignInAudience 'AzureADMultipleOrgs'
DisplayName Id AppId SignInAudience PublisherDomain
----------- -- ----- -------------- ---------------
Contoso Partner API dddd3333-ee44-5555-66ff-777777aaaaaa 22223333-cccc-4444-dddd-5555eeee6666 AzureADMyOrg contoso.com
此指令建立一個應用程式,任何 Microsoft Entra ID 租戶的帳號都能使用。
範例 3:建立一個應用程式,使用應用程式密碼(用戶端秘密)
Connect-Entra -Scopes 'Application.ReadWrite.All'
$passwordCred = [Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential]@{
DisplayName = 'AI automation Cred'
StartDateTime = [DateTime]::UtcNow
EndDateTime = [DateTime]::UtcNow.AddYears(1)
}
$app = New-EntraApplication -DisplayName 'Contoso Automation App' -PasswordCredentials @($passwordCred)
$app.PasswordCredentials.SecretText
此指令建立一個帶有密碼憑證(用戶端秘密)的應用程式。 秘密值會在回應中回傳。
範例 4:建立具有 API 權限的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$msGraphAccess = @{
ResourceAppId = "00000003-0000-0000-c000-000000000000" # Microsoft Graph
ResourceAccess = @(
@{
Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" # User.Read
Type = "Scope"
},
@{
Id = "df021288-bdef-4463-88db-98f22de89214" # User.ReadWrite.All
Type = "Role"
}
)
}
New-EntraApplication -DisplayName "User Management App" -RequiredResourceAccess @($msGraphAccess)
此指令建立一個具有指定 Microsoft 圖形 API 權限的應用程式。
範例 5:建立帶有外掛細節的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$addIn = @{
Id = "00000002-0000-0ff1-ce00-000000000000" # Outlook's service principal ID
Type = "messageReadCommandSurface" # UI surface
Properties = @(
@{ Key = "extensionId"; Value = "Contoso.EmailInsights" },
@{ Key = "sourceLocation"; Value = "https://contoso.com/addin/home.html" },
@{ Key = "supportedLocales"; Value = "en-US" }
)
}
New-EntraApplication -DisplayName "Contoso Email Insights" -AddIns $addIn
此範例將 Contoso Email Insights 外掛註冊為 Microsoft Entra ID,使其能與 Outlook on the Web 整合,並可側載或透過 AppSource 發布。
範例 6:建立應用程式角色
Connect-Entra -Scopes 'Application.ReadWrite.All'
$appRoles = @(
@{
id = [Guid]::NewGuid()
allowedMemberTypes = @("User", "Application")
description = "Read-only access to HR data"
displayName = "HR Reader"
isEnabled = $true
value = "HRReader"
origin = "Application"
},
@{
id = [Guid]::NewGuid()
allowedMemberTypes = @("User", "Application")
description = "Manage HR data"
displayName = "HR Manager"
isEnabled = $true
value = "HRManager"
origin = "Application"
}
)
# Create the new application registration with AppRoles
New-EntraApplication -DisplayName "Contoso Sandbox" -AppRoles $appRoles
此範例註冊了一個多 Contoso Sandbox 租戶 API,並定義了兩個自訂角色: HRReader 用於 read-only 存取權限與 HRManager 用於 full access 員工資料。
範例 7:建立帶有識別碼 URI 的網頁應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso App' -IdentifierUris 'https://myselfserve.contoso.com'
此指令建立一個帶有識別碼 URI 的應用程式。
範例 8:使用 AdditionalProperties 建立應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$props = @{
displayName = "Advanced Configuration App"
signInAudience = "AzureADMyOrg"
api = @{
oauth2PermissionScopes = @(
@{
id = [Guid]::NewGuid().ToString("D")
adminConsentDescription = "Allow the app to access resources on user's behalf"
adminConsentDisplayName = "Access resources"
isEnabled = $true
type = "Admin"
value = "access"
}
)
}
}
New-EntraApplication -AdditionalProperties $props
此指令使用 AdditionalProperties 參數建立一個用於進階設定的應用程式。
範例 9:建立帶有標籤細節的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName "Contoso Tagged App" `
-SignInAudience "AzureADMultipleOrgs" `
-Tags @(
"WindowsAzureActiveDirectoryIntegratedApp",
"HideApp",
"CertifiedApp"
)
此範例建立多租戶企業應用程式,並新增標籤以支援 Microsoft Partner Center 的發現與管理員同意過濾。
範例 10:建立公開客戶端應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define the PublicClient object with redirect URIs
$publicClient = @{
redirectUris = @("https://login.microsoftonline.com/common/oauth2/nativeclient")
}
New-EntraApplication -DisplayName "Contoso PowerShell Client" `
-SignInAudience "AzureADMyOrg" `
-PublicClient $publicClient
此範例展示了如何以重定向 URI 註冊公開客戶端應用程式以進行本地測試,例如用於 Android 或 iOS 應用程式,這些應用程式需互動式驗證使用者。
範例 11:建立帶有自訂範圍的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define custom scopes for the API
$api = @{
oauth2PermissionScopes = @(
@{
id = [Guid]::NewGuid()
adminConsentDescription = "Allow the app to read user profiles."
adminConsentDisplayName = "Read user profiles"
isEnabled = $true
type = "User"
value = "Employee.Read"
},
@{
id = [Guid]::NewGuid()
adminConsentDescription = "Allow the app to write user profiles."
adminConsentDisplayName = "Write user profiles"
isEnabled = $true
type = "User"
value = "Employee.Write"
}
)
}
New-EntraApplication -DisplayName "Contoso API App" -Api $api
此範例展示了如何註冊應用程式並利用 -Api 參數定義其可用權限。
範例 12:建立帶有 RequiredResourceAccess 細節的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define the RequiredResourceAccess for Microsoft Graph API
$graphResourceAccess = @{
ResourceAppId = '00000003-0000-0000-c000-000000000000' # Microsoft Graph API AppID
ResourceAccess = @(
@{
Id = 'e1fe6dd8-ba31-4d61-89e7-88639da4683d' # GUID for 'User.Read' permission
Type = 'Scope' # Type of permission
}
)
}
# Define the RequiredResourceAccess for Azure Service Management API
$serviceManagementResourceAccess = @{
ResourceAppId = '797f4846-ba00-4fd7-ba43-dac1f8f63013' # Azure Service Management API ID
ResourceAccess = @(
@{
Id = '41094075-9dad-400e-a0bd-54e686782033' # GUID for 'user_impersonation'
Type = 'Scope' # Type of permission
}
)
}
# Combine both resource accesses into an array
$RequiredResourceAccess = @($graphResourceAccess, $serviceManagementResourceAccess)
# Create a new application with the required resource access
New-EntraApplication -DisplayName 'Contoso Service App' -RequiredResourceAccess $RequiredResourceAccess
此範例建立一個名為 Contoso Service App 的新應用程式,並透過在註冊時指定所需的資源存取權限,授予其 Microsoft Graph 授權呼叫(例如 User.Read)與 Azure Service Management API (user_impersonation)。
範例 13:建立帶有重定向 URI 的網頁應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$web = @{
redirectUris = @("https://contoso.com/auth", "https://contoso.com/auth/callback")
implicitGrantSettings = @{
enableAccessTokenIssuance = $true
enableIdTokenIssuance = $true
}
logoutUrl = "https://contoso.com/logout"
}
New-EntraApplication -DisplayName "Contoso Web App" -Web $web
此指令建立一個帶有重定向 URI 及隱含授權設定的網頁應用程式。
範例 14:建立一個帶有支援與行銷 URI 的網頁應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$informationalUrl = @{
marketingUrl = "https://contoso.com/marketing"
privacyStatementUrl = "https://contoso.com/privacy"
supportUrl = "https://contoso.com/support"
termsOfServiceUrl = "https://contoso.com/terms"
}
New-EntraApplication -DisplayName "Contoso Pay Portal" -InformationalUrl $informationalUrl
此指令建立一個包含支援與行銷網址的應用程式,幫助使用者與管理員在同意期間或 Microsoft Entra 入口網站中識別並信任該應用程式。
範例 15:建立帶有可選權利要求的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$optionalClaims = @{
idToken = @(
@{
name = "email"
source = $null # user, directory, $null
essential = $true
additionalProperties = @{}
}
)
accessToken = @(
@{
name = "roles"
source = $null # user, directory, $null
essential = $false
additionalProperties = @{}
}
)
}
New-EntraApplication -DisplayName "Contoso Claims App" -OptionalClaims $optionalClaims
此指令建立一個應用程式,並可選擇性聲明,例如 email 、ID tokens 中的 upn(userPrincipalName)聲明,以及存取權杖中的 sid(session ID)聲明,用於自訂會話追蹤與使用者身份解析。
範例 16:建立帶有家長監控設定的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define parental control settings
$parentalControlSettings = @{
countriesBlockedForMinors = @("DE", "FR") # ISO country codes
legalAgeGroupRule = "RequireConsentForMinors"
}
# Create the app with parental control settings
New-EntraApplication -DisplayName "Contoso Kids Stream" `
-SignInAudience "AzureADandPersonalMicrosoftAccount" `
-ParentalControlSettings $parentalControlSettings
此指令建立一個帶有家長控制設定的應用程式。 例如,為了符合合規要求,它可能會限制像「Contoso Kids Stream」這類串流應用程式的存取,適用於德國和法國等特定國家的兒童。
範例 17:建立一個帶有憑證憑證的應用程式
Connect-Entra -Scopes 'Application.ReadWrite.All'
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Certificates\MyCertificate.cer")
$thumbprint = $cert.Thumbprint
$base64Cert = [Convert]::ToBase64String($cert.RawData)
$keyCred = @{
CustomKeyIdentifier = $thumbprint
Type = "AsymmetricX509Cert"
Usage = "Verify"
Key = $base64Cert
DisplayName = "App Certificate"
StartDateTime = [DateTime]::UtcNow
EndDateTime = [DateTime]::UtcNow.AddYears(1)
}
New-EntraApplication -DisplayName "Contoso Certificate App" -KeyCredentials @($keyCred)
此指令建立一個帶有憑證憑證的應用程式。
參數
-AddIns
為應用程式定義自訂行為擴充功能。
參數屬性
| 類型: | System.Object[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-AdditionalProperties
自訂屬性可直接傳送至 Microsoft 圖形 API。
參數屬性
| 類型: | Hashtable |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 身體, 屬性, BodyParameter |
參數集
CreateWithAdditionalProperties
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Api
應用程式的 API 設定,包括 OAuth2 權限範圍和應用程式角色。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphApiApplication |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-AppRoles
為應用程式定義的一系列應用程式角色。
參數屬性
| 類型: | System.Collections.Generic.List`1[Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-DisplayName
應用程式在 Microsoft Entra ID 中的顯示名稱。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-GroupMembershipClaims
配置群組聲稱以使用者或 OAuth 2.0 存取權杖發出的資訊。 有效值: None, SecurityGroup, All。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-IdentifierUris
在 Azure AD 中唯一識別應用程式的 URI。
參數屬性
| 類型: | System.Collections.Generic.List`1[System.String] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InformationalUrl
包含更多應用程式資訊(行銷、服務條款、隱私等)的網址。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphInformationalUrl |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-IsDeviceOnlyAuthSupported
指定此應用程式是否支援沒有使用者的裝置驗證。
參數屬性
| 類型: | System.Nullable`1[System.Boolean] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-IsFallbackPublicClient
指定該應用程式是否為公開客戶端。 若未設定,預設行為為 false。
參數屬性
| 類型: | System.Nullable`1[System.Boolean] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-KeyCredentials
與申請相關的憑證憑證收集。 每份證件應包含:
- CustomKeyIdentifier:(可選)憑證指紋
- DisplayName:(可選)憑證的友善名稱
- EndDateTime:UTC的到期日與時間
- 說明:Base64 編碼的憑證資料
- StartDateTime:UTC開始日期與時間
- 類型:憑證類型,通常為「AsymmetricX509Cert」
- 用途:憑證的用途,通常是「驗證」
參數屬性
| 類型: | System.Object[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-OptionalClaims
可選的權利要求設定包含在存取權杖與 ID 權杖中。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-ParentalControlSettings
指定應用程式的家長控制設定。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphParentalControlSettings |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-PasswordCredentials
與應用程式相關聯的密碼認證集合。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-PublicClient
公開用戶端應用程式(行動裝置或桌面版)的設定。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphPublicClientApplication |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-RequiredResourceAccess
應用程式對其他資源(如 Microsoft Graph)所需的 API 權限。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SignInAudience
定義了本應用支援的帳號。 有效值: AzureADMyOrg、 AzureADMultipleOrgs、 AzureADandPersonalMicrosoftAccount、 PersonalMicrosoftAccount。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Tags
可用來分類與識別應用程式的自訂標籤。
參數屬性
| 類型: | System.Collections.Generic.List`1[System.String] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-TokenEncryptionKeyId
指定來自 keyCredentials 集合的公鑰 keyID 用於令牌加密。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Web
網頁應用程式的設定,包括重定向 URI 和登出 URL。
參數屬性
| 類型: | Microsoft.Graph.PowerShell.Models.MicrosoftGraphWebApplication |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CreateApplication
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
None
這個 cmdlet 不接受管線輸入。
輸出
PSCustomObject
回傳一個代表已建立 Microsoft Entra 應用程式的自訂物件。
備註
- 此指令小組需要 'Application.ReadWrite.All' 權限範圍。
- 使用憑證憑證時,請確保正確的憑證管理流程:
- 使用強密鑰大小(RSA 2048 位元或以上)
- 安全儲存私鑰
- 在證書到期前實施輪替
- 密碼憑證(用戶端秘密)應該只在憑證無法使用時使用。
- 關於安全最佳實務,請考慮:
- 在分配 API 權限時採用最低權限原則
- 限制應用程式角色只做必要的部分
- 敏感應用程式使用條件存取政策
- 實施適當的憑證輪替流程