您的位置:首页 > 运维架构 > Shell

[Azure]使用Azure Powershell上传本地目录中的文件文件(递归)

2017-06-22 15:34 465 查看
针对ASM环境的脚本:

param(
# SrcDir
[Parameter(Mandatory = $true)]
[string]$SrcDir,

# Subscription Name
[Parameter(Mandatory = $true)]
[string]$SubscriptionName,

# StorageAccountName
[Parameter(Mandatory = $true)]
[string]$StorageAccountName,

# Container Name
[Parameter(Mandatory = $true)]
[string]$ContainerName
)

function Upload ($folder, $SrcDirLen)
{
$subItems = Get-ChildItem $folder;
foreach ($item in $subItems)
{
if ($item.Mode -eq "d-----")
{
Upload $item.FullName $SrcDirLen;
} else {
$fileName = "$folder\$item";
$destpath = $folder.Substring($SrcDirLen);
$blobName = "$destpath/$item";
Write-Host "Copying $fileName to $blobName";
[void](Set-AzureStorageBlobContent -File $filename -Container $ContainerName -Blob $blobName -Context $storageAccount.Context -Force);
}
}
}

$cred = Get-Credential -Message "Use your Azure account to login";
[void](Add-AzureAccount -Environment AzureChinaCloud -Credential $cred);
[void](Select-AzureSubscription -SubscriptionName $SubscriptionName);

$storageAccount = Get-AzureStorageAccount -StorageAccountName $StorageAccountName;
upload $SrcDir $SrcDir.Length;
Write-Host "All files in $SrcDir uploaded to $containerName


针对ARM环境的脚本:

param(
# SrcDir
[Parameter(Mandatory = $true)]
[string]$SrcDir,

# Subscription Name
[Parameter(Mandatory = $true)]
[string]$SubscriptionName,

# ResourceGroupName
[Parameter(Mandatory = $true)]
[string]$ResourceGroupName,

# StorageAccountName
[Parameter(Mandatory = $true)]
[string]$StorageAccountName,

# Container Name
[Parameter(Mandatory = $true)]
[string]$ContainerName
)

function Upload ($folder, $SrcDirLen)
{
$subItems = Get-ChildItem $folder;
foreach ($item in $subItems)
{
if ($item.Mode -eq "d-----")
{
Upload $item.FullName $SrcDirLen;
} else {
$fileName = "$folder\$item";
$destpath = $folder.Substring($SrcDirLen);
$blobName = "$destpath/$item";
Write-Host "Copying $fileName to $blobName";
[void](Set-AzureStorageBlobContent -File $filename -Container $ContainerName -Blob $blobName -Context $storageAccount.Context -Force);
}
}
}

$cred = Get-Credential -Message "Use your Azure account to login";
[void](Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $cred);
[void](Select-AzureRmSubscription -SubscriptionName $SubscriptionName);

$storageAccount = Get-AzureRmStorageAccount -Name $StorageAccountName -ResourceGroupName $ResourceGroupName;
Upload $SrcDir $SrcDir.Length;

Write-Host "All files in $SrcDir uploaded to $ContainerName.";


测试效果:

PS C:\Users\DanielHX> &C:\Users\DanielHX\Desktop\[ARM]upload_local_dir_to_storage.ps1 -SubscriptionName Internal-005 -StorageAccountName daneaststorag

e -ContainerName demo -SrcDir D:\test -ResourceGroupName daneastresourcegroup1

Copying D:\test\test1\1.txt to \test1/1.txt

Copying D:\test\test1\2.txt to \test1/2.txt

Copying D:\test\test2\test4\1.txt to \test2\test4/1.txt

Copying D:\test\test2\1.txt to \test2/1.txt

Copying D:\test\test2\2.txt to \test2/2.txt

Copying D:\test\test2\3.txt to \test2/3.txt

Copying D:\test\test3\1.txt to \test3/1.txt

Copying D:\test\test3\2.txt to \test3/2.txt

Copying D:\test\test3\3.txt to \test3/3.txt

Copying D:\test\test3\4.txt to \test3/4.txt

Copying D:\test\1.txt to /1.txt

All files in D:\test uploaded to demo.

PS C:\Users\DanielHX> &C:\Users\DanielHX\Desktop\[ASM]upload_local_dir_to_storage.ps1 -SrcDir D:\test -SubscriptionName Internal-005 -StorageAccountNa

me danieleaststorage -ContainerName test

Copying D:\test\test1\1.txt to \test1/1.txt

Copying D:\test\test1\2.txt to \test1/2.txt

Copying D:\test\test2\test4\1.txt to \test2\test4/1.txt

Copying D:\test\test2\1.txt to \test2/1.txt

Copying D:\test\test2\2.txt to \test2/2.txt

Copying D:\test\test2\3.txt to \test2/3.txt

Copying D:\test\test3\1.txt to \test3/1.txt

Copying D:\test\test3\2.txt to \test3/2.txt

Copying D:\test\test3\3.txt to \test3/3.txt

Copying D:\test\test3\4.txt to \test3/4.txt

Copying D:\test\1.txt to /1.txt

All files in D:\test uploaded to test.


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐