Проблема конфигурации Azure DSC - PullRequest
0 голосов
/ 28 мая 2018

По сути, я просто пытаюсь получить очень простой доступ к деталям виртуальной машины с помощью Azure DSC.Я сделал следующее

  • Добавил новые учетные данные (которые содержат имя пользователя и пароль) и переменную (которая содержит subscriptionId) в разделе общих ресурсов моей учетной записи автоматизации
  • Реализовалиследующий код DSC для получения сведений о виртуальной машине: я могу заполнить этот файл на портале, он также генерирует файл .MOF.Но когда я пытаюсь применить это к узлу на портале, я получаю следующую ошибку:

Ресурсу PowerShell DSC MSFT_ScriptResource не удалось выполнить функцию Set-TargetResource с сообщением об ошибке: Термин «Получить»-AutomationPSCredential 'не распознается как имя командлета, функции, файла сценария или работоспособной программы.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку

Обратите внимание, что код, написанный внутри SetScript, успешно выполняется в Runbook!!!!!!

    Configuration VMAzureDSCTasks
    {
param
(
    [Parameter()]
    [System.String]
    $NodeName = "rajeshserver",

    [Parameter()]
    [System.String]
    $ResourceGroupName = "rajeshresourcegroup",

    [Parameter()]
    [System.String]
    $VMSize = "Standard_D2s_v3",

    [Parameter()]
    [System.String]
    $CredentialAssetName = "cred"
)

Import-DscResource -ModuleName 'PSDesiredStateConfiguration'        

Node $NodeName
{        
    Script resizevm
    {                 
        SetScript = {

                    # Credentials and Subscription ID declaration
                    $Cred = Get-AutomationPSCredential -Name $using:CredentialAssetName   
                    $null = Add-AzureRmAccount -Credential $Cred -ErrorAction Stop
                $SubId = Get-AutomationVariable -Name 'SubscriptionId'
                $null = Set-AzureRmContext -SubscriptionId $SubId -ErrorAction Stop      

                try {
                $vm = Get-AzureRmVm -ResourceGroupName $using:ResourceGroupName -VMName $using:NodeName -ErrorAction Stop
                } catch {
                throw "Virtual Machine not found!!!!!!" 
                exit
                }

                # Output current VM Size
                $currentVMSize = $vm.HardwareProfile.vmSize

                Write-Verbose -Message "`nFound the specified Virtual Machine: $using:NodeName"
                Write-Verbose -Message "Current size: $using:currentVMSize"

        }
        TestScript = {
         return $false                
        }
        GetScript = {
        }            
    }   
} 

}

1 Ответ

0 голосов
/ 27 августа 2018

Команда Get-AutomationPSCredential работает в Azure Automation.

Для DSC передайте учетные данные, используя Get-Credential.Добавьте параметр

[Parameter()]
[pscredential]
$Credential

и замените Get-AutomationPSCredential на Get-Credential -Credential $ Credential.

...