Powershell 脚本适用于 Add-AzureAccount 但不适用于 Login-AzureRmAccount

Powershell script works with Add-AzureAccount but not Login-AzureRmAccount

我有一个 zip 文件,其中包含要部署到我之前通过 Powershell 脚本部署的函数应用程序的 azure 函数。

我没有任何自己的 Azure 订阅。我写了一段代码,当你是订阅的所有者时它工作正常,我希望相同的功能能够在没有所有者订阅的情况下完成。

如果我这样做 Login-AzureRmAccount,此脚本将无法运行。它仅适用于 Add-AzureAccount..

Add-AzureAccount
Get-AzureSubscription -Current
$subscriptionName = Read-Host -Prompt 'Enter target Subscription name'
Select-AzureSubscription -Current -SubscriptionName $subscriptionName
$FuncAppName = Read-Host -Prompt 'Enter Function App Name you provided in above step'
Publish-AzureWebsiteProject -Package "Kovai.AtomicScope.Azure.zip" -Name $FuncAppName

我认为问题是没有 Publish-AzureRMWebsiteProject cmdlet(有一个 Select-AzureRmSubscription cmdlet 可以让你更接近一点,但不是全部)。

但是,publish-AzureWebsiteProject 是 Web Deploy\MSDeploy, so you could use msdeploy directly. You can also use WAWSDeploy 的包装器(也是 msdeploy 的包装器),这应该会使事情变得更容易。

Publish* cmdlet 是一个非常古老的 Azure RDFE cmdlet。 Login-AzureRMAccount 是一个 Azure 资源管理器(即较新的)cmdlet。

本质上,Azure 和 AzureRM cmdlet 与不同的端点通信并需要不同的身份验证。这不是 100% 正确(有一些例外),但这就是这种情况下发生的情况。

因此,如果您使用的 cmdlet 是 Verb-AzureSomething,则您需要添加 AzureAccount。如果 cmdlet 是 Verb-AzureRM*,那么您需要使用 Add-AzureRMAccount 的 Login-AzureRMAccount 进行身份验证。