У меня возникла проблема, из-за которой ресурсы PowerShell DS C не могут быть импортированы во время выполнения задания Packer через Azure Pipelines.
Упаковщик указывает на ошибку, говоря:
==> amazon-ebs: Provisioning with Powershell...
==> amazon-ebs: Provisioning with powershell script: ./scripts/dsc-windows-powershell-policy.ps1
==> amazon-ebs: At C:\Windows\Temp\script-5e6ad1c0-dea6-f683-86ea-f173e577e85d.ps1:24 char:5
==> amazon-ebs: + Import-DscResource -ModuleName ComputerManagementDsc # -ModuleVer ...
==> amazon-ebs: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
==> amazon-ebs: Could not find the module 'ComputerManagementDsc'.
==> amazon-ebs: At C:\Windows\Temp\script-5e6ad1c0-dea6-f683-86ea-f173e577e85d.ps1:28 char:9
==> amazon-ebs: + PowerShellExecutionPolicy ExecutionPolicy
==> amazon-ebs: + ~~~~~~~~~~~~~~~~~~~~~~~~~
==> amazon-ebs: Undefined DSC resource 'PowerShellExecutionPolicy'. Use Import-DSCResource to import the resource.
==> amazon-ebs: + CategoryInfo : ParserError: (:) [], ParseException
==> amazon-ebs: + FullyQualifiedErrorId : ModuleNotFoundDuringParse
==> amazon-ebs:
Сценарий установки для этой конфигурации начинается с обеспечения установки модулей. Я удалил из них оператор импорта из-за других сообщений, указывающих, что это может вызвать конфликт.
$ErrorActionPreference = 'Stop'
@(
'PSDscResources'
'ComputerManagementDsc'
) | ForEach-Object {
$m = $_
if(-not (Get-InstalledModule $m))
{
Write-Host "Installing Module: $m"
Find-Module -Name $m -Repository PSGallery | Install-Module -Scope AllUsers -Force -AllowClobber
}
else
{
Write-Host "Bypassed install of $m per already installed"
}
}
После завершения установки я запускаю в том же ps1 вызов конфигурации DS C. Однако, несмотря на множество различных тестов, я не могу распознать установленный ресурс DS C.
Я подозреваю, что что-то со встроенными ресурсами в Windows 2016 вызывает конфликт, но я не специалист по DS C, пока не знаю, что с этим делать.
Сбой конфигурации:
Configuration DSC_PowerShellExecutionPolicy_config
{
Import-DscResource -ModuleName ComputerManagementDsc -ModuleVersion 8.0.0
node 'localhost'
{
PowerShellExecutionPolicy ExecutionPolicy
{
ExecutionPolicy = 'RemoteSigned'
ExecutionPolicyScope = 'LocalMachine'
}
}
}
try
{
Write-Host "⚙ Initiating DSC_PowerShellExecutionPolicy_config"
DSC_PowerShellExecutionPolicy_config
Start-DscConfiguration DSC_PowerShellExecutionPolicy_config -Verbose -force -Wait
}
catch
{
throw
exit 1
}
Обратите внимание, это проблема для меня с другими установками DS C, которые я пытаюсь преобразовать (вместо моих доморощенных скриптов). ), и все они продолжают иметь эту проблему.
Кроме того, учитывая, что у Windows Server 2016, на котором я тестирую, нет последней версии nuget и PowerShellGet, я гарантирую, что последняя версия на момент сейчас:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Module PowerShellGet -MinimumVersion 2.2.3 -Force -Scope AllUsers -AllowClobber
Import-Module PowershellGet -MinimumVersion 2.2.3 -Force -verbose
Будем благодарны за любые указания!