我试图将文件(csv文件)上传到azure blob存储区。 我找到了一个脚本(见下文),但它在第一个try catch块中一直没能。 当您运行脚本时,它会向您询问两件事:
storagecontainer:我创建了一个名为" kepastorage"在这之下我创建了一个容器" testfiles"。
[CmdletBinding(SupportsShouldProcess = $true)]
param(
[Parameter(Mandatory = $true)]
[string]$LocalPath,
# The name of the storage container to copy files to.
[Parameter(Mandatory = $true)]
[string]$StorageContainer,
# If specified, will recurse the LocalPath specified.
[Parameter(Mandatory = $false)]
[switch]$RecurseLocalPath,
# If specified, will create the storage container.
[Parameter(Mandatory = $false)]
[switch]$CreateStorageContainer,
# If specified, will copy files to the container if the container already exists.
[Parameter(Mandatory = $false)]
[switch]$Force
)
# The script has been tested on Powershell 3.0
Set-StrictMode -Version 3
# Following modifies the Write-Verbose behavior to turn the messages on globally for this session
$VerbosePreference = "Continue"
# Check if Windows Azure Powershell is avaiable
if ((Get-Module -ListAvailable Azure) -eq $null)
{
throw "Windows Azure Powershell not found! Please install from http://www.windowsazure.com/en-us/downloads/#cmd-line-tools"
}
workflow UploadFilesInParallel
{
param(
# The name of the storage container to copy files to.
[Parameter(Mandatory = $true)]
[string]$StorageContainer,
# An array of files to copy to the storage container.
[Parameter(Mandatory = $true)]
[System.Object[]]$Files
)
if ($Files.Count -gt 0)
{
foreach -parallel ($file in $Files)
{
$blobFileName = Split-Path -Path $file.FullName -NoQualifier
try
{
Set-AzureStorageBlobContent -Container $StorageContainer `
-File $file.FullName -Blob $blobFileName `
-ConcurrentTaskCount 0 -Force
}
catch
{
$warningMessage = "Unable to upload file " + $file.FullName
Write-Warning -Message $warningMessage
}
}
}
}
# Ensure the local path given exists. Create it if switch specified to do so.
if (-not (Test-Path $LocalPath -IsValid))
{
throw "Source path '$LocalPath' does not exist. Specify an existing path."
}
# Get a list of files from the local folder.
if ($RecurseLocalPath.IsPresent)
{
# $files = ls -Path $LocalPath -File -Recurse
$files = @(ls -Path $LocalPath -File -Recurse)
}
else
{
# $files = ls -Path $LocalPath -File
$files = @(ls -Path $LocalPath -File)
}
if ($files -ne $null -and $files.Count -gt 0)
{
# Create the storage container.
if ($CreateStorageContainer.IsPresent)
{
$existingContainer = Get-AzureStorageContainer |
Where-Object { $_.Name -like $StorageContainer }
if ($existingContainer)
{
$msg = "Storage container '" + $StorageContainer + "' already exists."
if (!$Force.IsPresent -and !$PSCmdlet.ShouldContinue(
"Copy files to existing container?", $msg))
{
throw "Specify a different storage container name."
}
}
else
{
if ($PSCmdlet.ShouldProcess($StorageContainer, "Create Container"))
{
$newContainer = New-AzureStorageContainer -Name $StorageContainer
"Storage container '" + $newContainer.Name + "' created."
}
}
}
# Upload the files to storage container.
$fileCount = $files.Count
if ($PSCmdlet.ShouldProcess($StorageContainer, "Copy $fileCount files"))
{
$time = [DateTime]::UtcNow
UploadFilesInParallel -StorageContainer $StorageContainer -Files $files
$duration = [DateTime]::UtcNow - $time
"Uploaded " + $files.Count + " files to blob container '" + $StorageContainer + "'."
"Total upload time: " + $duration.TotalMinutes + " minutes."
}
}
else
{
Write-Warning "No files found."
}
任何人都知道我做错了什么? THX。
答案 0 :(得分:0)
您可以尝试此处解释的PowerShell脚本:Uploading a file to Azure Blob Storage。
$SubscriptionName = ""
$SubscriptionId = ""
$DestContainer = ""
$StorageAccountName = ""
Import-AzurePublishSettingsFile -PublishSettingsFile "<Location of the publishsettings-file>"
Set-AzureSubscription -SubscriptionId $SubscriptionId -CurrentStorageAccountName $StorageAccountName
Select-AzureSubscription -SubscriptionName $SubscriptionName
Set-AzureStorageBlobContent -File "<File you want to upload>" -Container $DestContainer