我已安排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 以下是版本号:
答案 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。