首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Server2016中导入-DscResource上的Pester Provisioning PowerShell步骤失败

Windows Server2016中导入-DscResource上的Pester Provisioning PowerShell步骤失败
EN

Stack Overflow用户
提问于 2020-03-14 02:34:51
回答 1查看 125关注 0票数 0

我遇到了一个问题,在通过PowerShell管道运行打包程序作业期间,Azure DSC资源无法导入。

Packer表示以下错误:

代码语言:javascript
复制
==> 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:

此配置的设置脚本首先确保模块已安装。我从他们那里删除了import语句,因为其他帖子表明它可能会导致某种类型的冲突。

代码语言:javascript
复制
$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中运行DSC配置的调用。然而,尽管有许多不同的测试,我还是不能让它识别安装的DSC资源。

我怀疑Windows 2016的内置资源是否导致了冲突,但我还不是DSC专家,还不知道该怎么做。

失败的配置是:

代码语言:javascript
复制
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
}

注意,这对我来说是一个问题,因为我正在尝试转换其他DSC安装(而不是我自己开发的脚本),并且所有这些安装都会遇到这个问题。

此外,考虑到我正在测试的Windows Server 2016镜像没有最新的nuget和PowerShellGet,我确保到目前为止是最新的版本:

代码语言:javascript
复制
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

任何指导都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-14 02:50:42

您看到的问题是,DSC配置在运行文件中的任何代码之前解析,甚至在将它们加载到内存之前也是如此。如果模块在配置脚本运行之前不在那里,那么它将失败。最好在运行配置之前安装这些模块,可能是在单独的打包步骤中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60675627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档