Я хочу автоматизировать загрузку с виртуальной машины Azure на мою локальную машину с помощью AzCopy.Вручную я не получил никаких проблем вообще.Мне даже удалось сделать автоматический скрипт для этого.Тем не менее, теперь мой сценарий не работает и раньше работал ... Может быть, я что-то пропустил или, может быть, мне повезло.
Итак, вот что у меня есть: settings.txt, который содержит 3 параметра, таких как папка вывода, источник (URL-адрес хранилища Azure) и ключ источника из хранилища Azure.myscript.ps1, который в основном получает содержимое из settings.txt и запускает AzCopy
Моя проблема связана с исходным ключом из Azure, если ключ не находится непосредственно в myscript.ps1, он не работает, и я получаюошибка.
Мой скрипт, который работает:
Get-Content "C:\ProgramData\NAME\SOFTWARE\Azure\settings\settings.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }
$filename="LOG_" + (Get-Date -Format "yyyy-MM-dd-HH-mm-ss") + ".log"
$log_path="C:\ProgramData\NAME\SOFTWARE\Azure\logs"
$Source=$h.Source
$Key="BLABLABLAMYWEIRDKEY"
$output_path = $h.Output
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy"
.\AzCopy.exe /Source:$Source /Dest:$output_path /SourceKey:$Key /Y /S /V /XO /XN >$log_path\$filename
Этот скрипт работает с этим settings.txt:
[SETTINGS]
Output="C:\Output\DATA\"
Source="https://blablabla.file.core.windows.net/blabla/"
Key="BLABLABLAMYWEIRDKEY"
Итак, я попытался сделать это:
Get-Content "C:\ProgramData\NAME\SOFTWARE\Azure\settings\settings.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }
$filename="LOG_" + (Get-Date -Format "yyyy-MM-dd-HH-mm-ss") + ".log"
$log_path="C:\ProgramData\NAME\SOFTWARE\Azure\logs"
$Source=$h.Source
$Key=$h.Key
$output_path = $h.Output
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy"
.\AzCopy.exe /Source:$Source /Dest:$output_path /SourceKey:$Key /Y /S /V /XO /XN >$log_path\$filename
но я получил эту ошибку:
.\AzCopy.exe : [2018/06/08 17:10:09][ERROR] The syntax of the command is incorrect. The supplied storage key (SourceKey) is not a valid Base64 string.
At F:\Desktop\Azure_DL.ps1:29 char:1
+ .\AzCopy.exe /Source:$Source /Dest:$output_path /SourceKey:$Key /Y /S ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ([2018/06/08 17:... Base64 string.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Есть идеи?Мне действительно нужно иметь ключевое хранилище информации в текстовом файле.