Ресурс файла DSC: невозможно подключиться к хранилищу файлов Azure с помощью объекта учетных данных

Я пытался заставить скрипт DSC работать с использованием файлового ресурса DSC для копирования файлов из хранилища файлов Azure на локальный компьютер, как показано ниже.

 File FabrikamFibreSourceFiles
    {
        Ensure = "Present"  # You can also set Ensure to "Absent"
        Type = "Directory“ # Default is “File”
        Recurse = $true
        Credential = $storageCredential
        SourcePath = "\\sriksstore.file.core.windows.net\fabrikamfibreshare" # This is a path that has web files
        DestinationPath = "C:\inetpub\dev\fabrikamfibre\" # The path where we want to ensure the web files are present
    }

$ StorageCredential передается при вызове, как показано ниже.

$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName  -StorageAccountKey $storageKey
$secpasswd = ConvertTo-SecureString $storageKey -AsPlainText -Force
$storagecreds = New-Object System.Management.Automation.PSCredential ($storageAccountName, $secpasswd)

Get-AzureVM -ServiceName fabrikamfibre -Name fabrikamfibre| `
Set-AzureVMDscExtension -StorageContext $storageContext `
-ConfigurationName "FabrikamFibre" -ConfigurationArgument @{ storageCredential= ($storagecreds) }`
-ConfigurationArchive "fabrikamfibredsc.ps1.zip" | Update-AzureVM

Не удается скопировать содержимое со следующими ошибками

Ошибка возникает при доступе к общему сетевому ресурсу с указанными учетными данными. Убедитесь, что учетные данные верны и общий сетевой ресурс доступен. Обратите внимание, что учетные данные не следует указывать вместе с локальным путем. Соответствующий файл / каталог: \ sriksstore.file.core.windows.net \ fabrikamfibreshare. Указанный сеанс входа в систему не существует. Возможно, он уже был прекращен. Ошибка возникает при доступе к общему сетевому ресурсу с указанными учетными данными. Убедитесь, что учетные данные верны и общий сетевой ресурс доступен. Обратите внимание, что учетные данные не следует указывать вместе с локальным путем. Соответствующий файл / каталог: \ sriksstore.file.core.windows.net \ fabrikamfibreshare.

Он также не работает, когда я пытаюсь вызвать с помощью Get-Credential, как упоминалось в различных примерах, если кто-то пытался использовать ресурс файла DSC с хранилищем файлов Azure, пожалуйста, помогите. Я дважды проверил учетные данные, они верны, интересно, когда я использую многословную запись для печати $ storageCredential.Username, они всегда выводят пустые. Я определенно что-то упускаю.


person Sri Kanth    schedule 29.07.2015    source источник


Ответы (2)


не могли бы вы дважды проверить объявление $ storageCredential в своей конфигурации и убедиться, что оно относится к типу PSCredential?

configuration MyConfiguration([PSCredential] $storageCredential...) {
   ...
} 

Если это верно, можете ли вы проверить значение storageCredential, полученное вашей виртуальной машиной? Он будет в объекте JSON в файле с именем

c: \ пакеты \ плагины \ Microsoft.powershell.dsc \ x.x.x.x \ runtimesettings \ settings.x

person Norberto Arrieta    schedule 26.08.2015

Это довольно старый вопрос, но, к сожалению, проблема сохраняется и по сей день при использовании ресурса File для копирования файлов из общего доступа к файлам Azure. Я попытался использовать его точно так же, как автор вопроса через расширение DSC, и получил ту же ошибку. Я проверил правильность всех учетных данных в файлах настроек. Фактически, у меня не было проблем с подключением к общей папке с виртуальной машины с помощью файлового проводника.

В конце концов я отказался от использования ресурса File и вместо этого использовал ресурс Script, где я вручную подключился к файловому ресурсу с помощью Powershell, скопировал файлы в локальную файловую систему и отключил монтирование. Я передаю в сценарий некоторые переменные, такие как учетные данные для совместного использования файлов, букву диска, к которому нужно подключиться, и локальные пути к файлам, чтобы удалить файлы. В части TestScript вы можете запустить любую проверку, которая подходит вам, например, использовать Test-Path, чтобы убедиться, что файлы были скопированы. Надеюсь, это поможет кому-то, кто сталкивается с этой проблемой ...

    Script CopyFilesFromAzureFileshare
    {
        SetScript =
        {
             New-PSDrive -Name $using:localMountDrive -PSProvider FileSystem -Root $using:fileshareSrcPath -Credential $using:fileshareCredential -Persist

             $src = $using:localMountDrive + ":\*";

             if (-Not (Test-Path $using:localSrcPath))
             {
                  md -path $using:localSrcPath
             }

             Copy-Item $src -Destination $using:localSrcPath -Recurse -Force

             Remove-PSDrive -Name $using:localMountDrive -PSProvider FileSystem 
        }
        TestScript = 
        {
            Test-Path "$using:localSrcPath\$using:fileshareInstallArchive" -PathType Leaf

        }
        GetScript = { @{ Result = '' } }
    }
person Sergey Kardash    schedule 04.08.2018