Powershell-新AzureRmADServicePrincipal-获取机密属性不需要';不行?
当我试图运行下面的代码时Powershell-新AzureRmADServicePrincipal-获取机密属性不需要';不行?,azure,powershell,azure-active-directory,Azure,Powershell,Azure Active Directory,当我试图运行下面的代码时 $ServicePrincipalName = "MY SPN name" $ScopeSubscriptionId = "Subscription ID" $AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$Servic
$ServicePrincipalName = "MY SPN name"
$ScopeSubscriptionId = "Subscription ID"
$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com" -ErrorAction Stop
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
我无法从“$sp”对象检索机密属性。我完全知道这是一个秘密字符串,应该这样接受:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret)
$UnsecureSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
当我从第二行删除ApplicationId参数时,一切都正常工作
$sp = New-AzADServicePrincipal -DisplayName $ServicePrincipalName -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
你知道为什么会这样吗?尽管我注意到这种行为发生在最近几天。因为当您使用下面的两个命令时,它不会自动为您创建秘密
$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com" -ErrorAction Stop
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
$sp = New-AzADServicePrincipal -DisplayName $ServicePrincipalName -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
您也可以在门户中进行检查:
当您使用不带-ApplicationId
的命令创建服务主体时,它将创建一个服务主体以及一个广告应用程序(应用程序注册),并且还会自动为您创建一个秘密
$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com" -ErrorAction Stop
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
$sp = New-AzADServicePrincipal -DisplayName $ServicePrincipalName -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop
在门户网站中进行检查:
如果您想将命令与
-ApplicationId
一起使用,您可以手动为您的广告应用程序创建一个密码,您可以使用,您可以自己设置密码值,在我的示例中,密码是password01代码>
$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com"
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId
$SecureStringPassword = ConvertTo-SecureString -String "password01!" -AsPlainText -Force
New-AzADAppCredential -ApplicationId $AzureAdApplication.ApplicationId -Password $SecureStringPassword -EndDate (Get-Date).AddYears(1)
除了,如果您只想为机密生成随机值,您需要在AzureAD
模块中使用,请参见此