Я пытаюсь научиться использовать учетные данные с конфигурацией желаемого состояния PowerShell, и я не могу понять разницу между атрибутами Credential
и PsDscRunAsCredential
ресурса.
В качестве простого тестового примера я пытаюсь скопировать папку и ее содержимое из общей папки в локальную папку на целевом узле. Учетная запись компьютера целевого узла не имеет доступа к общему ресурсу, поэтому я предоставляю учетные данные, у которых есть доступ. Если я назначу учетные данные атрибуту Credential
ресурса File, это сработает. Если я использую атрибут PsDscRunAsCredential
, я получаю сообщение об ошибке «Отказано в доступе» при попытке доступа к общей папке.
Configuration FileWithCredential {
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node $AllNodes.NodeName {
# copy files from a file share to a new folder on the target node
File CopyFileShareFolder {
Ensure = 'Present'
Type = 'Directory'
Recurse = $true
SourcePath = '\\fileshare\folder\subfolder\stuff_I_want_to_copy'
DestinationPath = 'c:\ps\DSC\filesharedestination'
# If I use Credential instead of PsDscRunAsCredential, it works
# Credential = Get-Credential -UserName ourdomain\myaccout -Message 'Enter Password'
PsDscRunAsCredential = Get-Credential -UserName ourdomain\myaccout -Message 'Enter Password'
}
}
}
$ConfigData = @{
AllNodes = @(
@{
NodeName = 'target-server'
PsDscAllowDomainUser = $true
PsDscAllowPlainTextPassword = $true
}
)
}
Я компилирую MOF на компьютере с Windows 10 и передаю конфигурацию на сервер Server 2016. Оба работают под управлением PowerShell 5.1.
PS C:\Users\me\Documents\pscode\dsc_test2> FileWithCredential -ConfigurationData $ConfigData
PS C:\Users\me\Documents\pscode\dsc_test2> Start-DscConfiguration .\FileWithCredential\ -Verbose -Wait -Force
Я понимаю, что PsDscRunAsCredential
новый, и я предполагаю, что есть причина предпочесть его старому Credential
, но я не могу понять, в чем реальные отличия. Взаимозаменяемы ли они в принципе? Если нет, то что мне не хватает, чтобы учетные данные «запуск от имени» работали?
ПРИМЕЧАНИЕ. Я понимаю риск безопасности, связанный с использованием простых текстовых паролей, но сейчас я просто пытаюсь понять, как передавать учетные данные и убедиться, что они работают. Следующим в моем списке стоит научиться делать это безопасно.
File
... несколько особенный. Это один из немногих ресурсов, реализованных в двоичном виде. У него есть некоторые странности, такие как отсутствие возвратаModuleName
при запускеGet-DscResource
. Возможно, это реализовано таким образом, что LCM не может изменить свой контекст. Было бы интересно включить отладку для DSC, а потом ворваться в отладчик и проверьте свой контекст, попробуйте получить доступ к общему ресурсу и локальной файловой системе и т. д. - person briantist   schedule 05.04.2018