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>]

说明

New-EntraApplication cmdlet 在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

此示例向 Microsoft Entra ID 注册 Contoso Email Insights 加载项,以便它可以与 Web 上的Outlook集成,并通过 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

此示例注册调用的多租户 API Contoso Sandbox 并定义两个自定义角色:HRReader用于read-only访问和HRManagerfull access访问员工数据。

示例 7:使用标识符 URI 创建 Web 应用程序

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 合作伙伴中心发现和管理员同意筛选。

示例 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 创建 Web 应用程序

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 和隐式授予设置创建 Web 应用程序。

示例 14:创建支持和营销 URI 的 Web 应用程序

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

此命令创建一个支持和营销 URL 的应用程序,以帮助用户和管理员在许可期间或在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

此命令创建一个应用程序,其中包含可选声明,例如 ID 令牌中的电子邮件、upn(userPrincipalName)声明,以及用于自定义会话跟踪和用户标识解析的访问令牌中的 sid(会话 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 儿童流”等流式处理应用的访问权限,以满足合规性要求。

示例 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
别名:Body, 属性, 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、、SecurityGroupAll.

参数属性

类型: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

包含有关应用程序的详细信息(营销、服务条款、隐私等)的 URL。

参数属性

类型: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、、AzureADMultipleOrgsAzureADandPersonalMicrosoftAccountPersonalMicrosoftAccount

参数属性

类型: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

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应用程序的自定义对象。

备注

  • 此 cmdlet 需要“Application.ReadWrite.All”权限范围。
  • 使用证书凭据时,请确保适当的证书管理做法:
    • 使用强密钥大小(RSA 2048 位或更高版本)
    • 安全地存储私钥
    • 在过期前实现证书轮换
  • 仅当无法使用证书时,才应使用密码凭据(客户端密码)。
  • 有关安全最佳做法,请考虑:
    • 分配 API 权限时使用最低特权原则
    • 将应用程序角色限制为仅必需角色
    • 对敏感应用程序使用条件访问策略
    • 实现正确的凭据轮换过程