Я пытаюсь выполнить модуль Runbook PowerShell для учетной записи Azure Automation, который должен выполнить сценарий PowerShell на виртуальной машине Azure Win, используя следующую инструкцию:
Invoke-AzureRmVMRunCommand -ResourceGroupName $sdvobjVM1.ResourceGroupName -Name $sdvstrNameVM1 -CommandId 'RunPowerShellScript' -ScriptPath $sdvstrScriptFileNameTmp -Parameter $sdvhshParamsFolderCopy
Параметр инструкции выглядит следующим образом:
$sdvhshParamsFolderCopy = @{Para1='String1'; Para2='String2'; Para3='String3'; Para4='String4'; Para5='String5'; Para6=@('Application', 'Data', 'Execution')}
Вопрос: Возможно ли это с помощью встроенного массива ("Para6") в хеш-таблице?И если да, то как?
Я пробовал это в течение некоторого времени безуспешно, так как не могу получить доступ к значениям массива в удаленном скрипте;см. ниже для деталей и фактических примеров кода.Пожалуйста, помогите кому-нибудь !!!
Сведения о проблеме:
В модуле запуска Azure Automation у меня есть:
...
[string] $sdvstrFileShare = "$sdvstrNameSA1.file.core.windows.net\$sdvstrFileShareName"
[array] $sdvastrCopyFolders = @('Application', 'Data', 'Execution')
...
$sdvhshParamsFolderCopy = @{sdvstrNameSA1 = $sdvstrNameSA1;
sdvstrSA1AccessKey = $sdvstrSA1AccessKey;
sdvstrFileShare = $sdvstrFileShare;
sdvstrSrcDriveLetter = $sdvstrSrcDriveLetter;
sdvstrDstDriveLetter = $sdvstrDstDriveLetter;
sdvastrCopyFolders = $sdvastrCopyFolders
}
(здесь убраны могильные акценты с разрывной линией)
В вызываемом скрипте у меня есть:
# Parameters
Param (
[string] $sdvstrNameSA1,
[string] $sdvstrSA1AccessKey,
[string] $sdvstrFileShare,
[string] $sdvstrSrcDriveLetter,
[string] $sdvstrDstDriveLetter,
[array] $sdvastrCopyFolders
)
Оба [массив] $ sdvastrCopyFolders и [массив[]] $ sdvastrCopyFolders не будет работать.
Симптом состоит в том, что я получаю в вызываемом скрипте:
$sdvastrCopyFolders | ForEach{$_} | Out-File -FilePath 'D:\sdvastrCopyFoldersForEach.txt'
System.Object[]
$sdvastrCopyFolders.Item(0) | Out-File -FilePath 'D:\sdvastrCopyFoldersItem0.txt'
System.Object[]
$sdvastrCopyFolders.GetValue(0) | Out-File -FilePath 'D:\sdvastrCopyFoldersGetValue.txt'
System.Object[]
, но не ожидаемые члены массива:
Application
Data
Execution
Если я тестирую передачу / извлечение параметров HT / Array между двумя сценариями в простом PowerShell, все работает как положено:
PS Z:\> $sdvastrCopyFolders.Length
3
PS Z:\> (,$sdvastrCopyFolders).GetValue(0)
Application
Data
Execution
PS Z:\> (,$sdvastrCopyFolders).GetValue(0).Item(2)
Execution