Azure-将文件从VM复制到存储帐户

时间:2019-11-28 06:58:25

标签: azure azure-storage-blobs azure-powershell

我准备了一个脚本,用于在Azure中的Windows上执行.ps1脚本。 Powershell脚本存储在一个存储帐户中。脚本输出定向到Windows VM上的本地C:\驱动器。为了在VM上运行脚本,我正在使用“自定义脚本扩展”,请从下面的代码中提取。问题是,如何将Windows VM上output.csv驱动器收到的C:\复制到存储帐户?

##Storage Account credentials
$StorageAccountName = (Get-AutomationPSCredential -Name 'xxx').UserName
$StorageAccountKey = (Get-AutomationPSCredential -Name 'xxx').GetNetworkCredential().Password

$Context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

$CSEName = ((Get-AzureRmVm -ResourceGroupName $ResourceGroup -Name $VM | 
Where-Object {$_.Extensions.VirtualMachineExtensionType -eq "CustomScriptExtension"}).Extensions | 
Where-Object {$_.VirtualMachineExtensionType -eq "CustomScriptExtension"}).Name

write-output "CSE Name: $CSEName"

Set-AzureRmVMCustomScriptExtension -ResourceGroupName $ResourceGroup `
    -VMName $VM `
    -FileName $psfilename `
    -ContainerName $ContainerName `
    -StorageAccountName $StorageAccountName `
    -StorageAccountKey $StorageAccountKey `
    -Run $psfilename `
    -Location "North Europe"`
    -Name $CSEName

$LogFilePath = "C:\Users\xxx\Desktop\Output.csv"

1 个答案:

答案 0 :(得分:-1)

注意:我重新编辑了整个Ansewr

如果我正确理解您的脚本,则说明您正在使用该脚本供内部使用。 在这种情况下,解决方案非常简单。 当您获得了有关源和目标的所有信息后,只需要将它们连接到proper Blob to Copy

  • 您将需要一个存储帐户访问密钥(易于获取/使用,但安全性较低)
  • 或具有至少以下特权=读,写,列表的SAS。 (配置起来有点困难,但更安全)

下面是使用存储帐户访问密钥的示例:

$ResourceGroupName = "Resource-Group"
$storageAccountName = "Storge account"
#full path to the file
$localPath = "C:\test\vm01.5f9e0fc2-cf60-444f-9cba-61c6f66b6373.serialconsole.log"
#blob container name
$storageContainerName = "test"
#Blob name (the name of the file in after the transfer)
$BlobName = "destFileName.log"


#getting the SA Key
$SAkey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -AccountName $storageAccountName).Value[0]
#getting Storage account context
$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $SAkey
#copy the file
Set-AzStorageBlobContent -File $localPath -Container $storageContainerName -Blob $BlobName -Context $destinationContext

如果您已连接到天蓝色,则脚本可以正常工作;如果不成功,则可以传递由$SAkey插入的SAS URL,它也可以正常工作。 要运行它,只需在ps1脚本的末尾添加。