Azure凭据尚未设置或已过期

时间:2017-09-07 06:51:18

标签: powershell azure

我已安排PowerShell脚本在Azure中执行管道。 使用Login-AzureRMAccount

生成了登录脚本(ProfileContext.ctx)

以下是要安排的代码:

$path = "D:\ProfileContext.ctx"
Import-AzureRmContext -Path $path
$dfn = "salesprod"
$rgn = "sale-dw"
$df=Get-AzureRmDataFactory -ResourceGroupName $rgn -Name $dfn

$ISTstartdate = get-date

#Set Pipeline active period
$UTCstartdate = $ISTstartdate.touniversaltime().addminutes(5)
$UTCenddt = $UTCstartdate.AddHours(5)

$pipelinename = "SalesPipeline"

Set-AzureRmDataFactoryPipelineActivePeriod -ResourceGroupName $rgn -PipelineName $pipelinename -DataFactoryName $dfn -StartDateTime $UTCstartdate -EndDateTime $UTCenddt -Force 

以上代码可以正常运行2到3天,但后来我开始遇到问题:

您的Azure凭据尚未设置或已过期,请运行Login-AzureRMAccount以设置Azure凭据。 在D:\ RunPipeline.ps1 以下是版本号:

  1. PSVersion - 5.0.10586.117
  2. Azure - 4.2.1

3 个答案:

答案 0 :(得分:4)

我通过以下解决方法解决了这个问题:这会自动登录我,然后我可以安排没有上下文文件:

$accountName = "pqr@xyz.com"
$password = ConvertTo-SecureString "mypwd" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($accountName, $password)
Login-AzureRmAccount -Credential $credential
Get-AzureRmResource 

答案 1 :(得分:1)

添加约瑟夫的回答。您的答案仅适用于Azure AD帐户,Microsoft帐户不支持非交互式登录。根据您的情况,我建议您可以使用服务主体,它更安全,不泄漏您的帐户信息。什么是Service Principal

  

当您拥有需要访问资源的应用或脚本时,您可以   为应用设置身份并使用自己的应用验证应用   证书。此身份称为服务主体。

您可以参考此link来创建新的服务主体并授予Contributor角色。您可以使用以下命令登录订阅。

$subscriptionId=""
$tenantid=""
$clientid=""
$password=""
$userPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$userCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $clientid, $userPassword
Add-AzureRmAccount -TenantId $tenantid -ServicePrincipal -SubscriptionId $subscriptionId -Credential $userCredential

答案 2 :(得分:0)

我今天遇到了同样的问题,但是将Azure PowerShell模块更新到最新版本后,一切都很好。您可以在轻松使用Update-Module的同时执行此操作,或者继续使用Install-Module AzureRm -Force。