Передача параметра Invoke-AzureRmVMRunCommand внезапно завершается ошибкой - PullRequest
0 голосов
/ 29 февраля 2020

Контекст: Запуск решения Azure Automation Account, в котором сценарий PS вызывающей стороны выполняет другой сценарий PS (выполняемый на ВМ) с передачей параметров через Invoke-AzureRmVMRunCommand.

Story: У меня был скрипт PowerShell (вызывающий), который выполнял другой (называемый) скрипт PowerShell на удаленной Azure Win VM. Этот поток выполнялся по расписанию учетной записи автоматизации каждый день, но внезапно перестал работать два дня go, поскольку передача параметров от вызывающей стороны вызываемому сценарию больше не работает. В настоящее время я обвиняю MSFT Azure людей в нарушении моего решения PRD.

Здесь код сценария PS вызывающего абонента для передаваемых аргументов:

$hshParams = @{
    strSAName         = $hshParameters.strStagingSA
    strSAAccessKey    = $strSAAccessKey
    strFileShare      = '"' + $strFileShare + '"'
    strCopyObjects    = $hshParameters.strCopyObjects
    strSrcDriveLetter = $strSrcDriveLetter
    strDstDriveLetter = $strDstDriveLetter
}

Здесь вызов VM- запустить сценарий PS:

Invoke-AzureRmVMRunCommand -ResourceGroupName $objVM.ResourceGroupName -Name $objVM.Name `
    -CommandId 'RunPowerShellScript' -ScriptPath $strRemoteScriptFileNameTmp -Parameter $hshParams

Здесь код приема параметра на стороне сценария PS, запускаемого виртуальной машиной:

# Parameters
Param (
    [string] $strCopyObjects = $null,
    [string] $strSAAccessKey = $null,
    [string] $strFileShare = $null,
    [string] $strSAName = $null,
    [string] $strDstDriveLetter = $null,
    [string] $strSrcDriveLetter = $null
)

До тех пор, пока два дня go не будут заполнены все эти шесть строковых значений правильно и в соответствии с настройкой аргумента в таблице ha sh $ hshParams:

$strSAAccessKey = 92LO1Q4tuyeiqxxx
$strFileShare = 129xxxa1.file.core.windows.net\solutionfiles
$strSAName = 12xsa1
$strDstDriveLetter = D
$strSrcDriveLetter = Z
$strCopyObjects = AutoTopUp\Application\Live

Проблема: Теперь я вижу, что пять строковых значений внезапно перестают заполняться одним существом фигня, вот как они выглядят сегодня:

$strSAAccessKey = []
$strFileShare = []
$strSAName = []
$strDstDriveLetter = []
$strSrcDriveLetter = []
$strCopyObjects = AutoTopUp\Application\Live" -strSAAccessKey 92LO1Q4tuyeiqxxx -strFileShare 129xxxa1.file.core.windows.net\solutionfiles -strSAName 12xsa1 -strDstDriveLetter D -strSrcDriveLetter Z

Решение не было затронуто, оно просто работало по расписанию. $ Args.Count в скрипте запуска VM возвращает '2'.

Мой вопрос: Кто-нибудь с объяснением этого нового поведения? К сожалению, мне не удалось организовать передачу параметров по-другому, поскольку все немного неясно, каким будет правильный способ получения табличных значений ha sh. Страница справки MSFT для «Invoke-AzureRmVMRunCommand» (конечно) здесь не помогает, также я не нашел никаких других четких способов передачи параметров в SO или Google ...

1 Ответ

0 голосов
/ 11 марта 2020

Подобный вопрос поднимается в этой ветке MSDN; Просто поделитесь этим для широкой аудитории, которая может столкнуться с подобной проблемой.

...