[Azure]Azure Automation调用非默认的DLL库

60 篇文章 0 订阅
59 篇文章 0 订阅


Azure经典门户中的Automation功能提供了非常方便的计划任务功能,可以让很多定时任务在Azure中完成,而不需要额外用本地的机器去执行计划任务,大大节省了成本。但是Azure Automation中提供的库毕竟有限,那么如果我们需要用到的DLL库不在其中,如何将其导入到Automation的“资产”中并进行引用呢?请看下文:


首先说明一下本地DLL的打包和导入方法:

  1. Microsoft.WindowsAzure.StorageClient.dll为例,我们要在Automation里面导入这个模块,调用其中的方法和对象,首先第一步,创建一个名为Microsoft.WindowsAzure.StorageClient的文件夹,将Microsoft.WindowsAzure.StorageClient.dll放到这个文件夹下,然后用zip压缩一下,结构是这样的:

    Microsoft.WindowsAzure.StorageClient.zip

    Microsoft.WindowsAzure.StorageClient(文件夹)

    Microsoft.WindowsAzure.StorageClient.dll

 

  1. 接着将压缩包上传到Automation的资产(Assets)中:

     

    导入完成:

导入完成后,需要在Runbook脚本中添加下面一行语句,才能够正常加载模块中的对象以及方法:

Add-Type -Path "C:\Modules\User\Microsoft.WindowsAzure.StorageClient\Microsoft.WindowsAzure.StorageClient.dll";

 

我们以快照还原脚本为例,在Runbook中写入下面的脚本用来还原一个vhdsnapshot

workflowTestRunbook

{

   InlineScript {

       $Cred =Get-AutomationPSCredential -Name"XXXXXXX";

       Add-AzureAccount -Credential$Cred -EnvironmentAzureChinaCloud;

       Select-AzureSubscription -SubscriptionName"XXXXXXXX";

       

       Add-Type -Path"C:\Modules\User\Microsoft.WindowsAzure.StorageClient\Microsoft.WindowsAzure.StorageClient.dll";

       $creds =New-Object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey("XXXXXXXXX","XXXXXXX");

       $blobname = "XXXXXXXXXXXXXXXX.vhd";

       $StorageAccountName ="XXXXXXXXXXXXXXXXX";

       $blobUri = "https://" +$StorageAccountName + ".blob.core.chinacloudapi.cn/vhds/"

       $blobPath = "Restored"  +$blobname

 

       #get the storage account key

       $key = (Get-AzureStorageKey-StorageAccountName$StorageAccountName).Primary

 

       #generate credentials based on the key

       $creds =New-Object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey($StorageAccountName,$key)

     

       #create an instance of the CloudBlobClient class

       $blobClient =New-Object Microsoft.WindowsAzure.StorageClient.CloudBlobClient($blobUri,$creds)

 

       #and grab a reference to our target blob

       $blob =$blobClient.GetBlobReference($blobPath)

 

       $BlobOptions =New-Object Microsoft.WindowsAzure.StorageClient.BlobRequestOptions

       $BlobOptions.BlobListingDetails="Snapshots"

       $BlobOptions.UseFlatBlobListing=$true

       $BlobSnapshots =$Blob.Container.ListBlobs($BlobOptions);

   

       #Get all snapshots of specified blob

       $Snapshots =$BlobSnapshots |Where{$_.Name-eq $blobName-and$_.SnapshotTime-ne$null}

       

       #Starting recover blob

       $blob.CopyFromBlob($Snapshots[0]);

   }

}

 

参考链接:http://stackoverflow.com/questions/33615654/adal-in-azure-automation-type-not-loading-intermittantly
  • 86
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值