【问题标题】:Why does this script resource not install Chocolatey packages?为什么这个脚本资源不安装 Chocolatey 包?
【发布时间】:2015-09-17 22:38:34
【问题描述】:

我正在尝试编写通过 PackageManagement(又名 OneGet)安装包的所需状态配置。包“notepadplusplus”来自 Chocolatey 存储库,但我想使用 PackageManagement 而不是 Chocolatey 客户端。我找不到 DSC 资源来做这件事,所以我正在使用脚本资源。

DSC 运行没有错误,Notepad++ 显示在包列表中,但从未真正安装(Notepad++.exe 在系统上不存在)。

我在 Windows 10 虚拟机上运行。

这是我正在做的一个简化示例。有人发现我做错了什么吗?

dscConfig.ps1

Configuration BuildProvisioning
{
    param(
        [string[]]$computerName="localhost"
    )
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    Node $computerName
    {
        Script PackageManagementTest
        {
            SetScript = {
                Get-PackageProvider NuGet -Force | Out-Null
                Get-PackageProvider Chocolatey -Force | Out-Null
                Install-Package notepadplusplus -Force
            }
            TestScript = { $false }
            GetScript  = { @{} }
        }
    }
}

这就是我在虚拟机上启动它的方式

. .\dscConfig.ps1
BuildProvisioning
winrm quickconfig -quiet
Start-DscConfiguration -Verbose -Force -Wait -ComputerName "localhost" -Path ".\BuildProvisioning\"

【问题讨论】:

    标签: powershell chocolatey package-management


    【解决方案1】:

    这是由this issue in OneGet 引起的,您必须通过 Set-ExecutionPolicy 启用脚本,否则 OneGet 在报告成功时失败。 即使您在启动 DSC 之前设置了执行策略,也会发生这种情况。它必须在您的 DSC 配置中进行设置。显然,它在不继承执行策略的新会话中运行。

    这是一个简单的修复,我在安装包之前设置了执行策略:

    Configuration BuildProvisioning
    {
        param(
            [string[]]$computerName="localhost"
        )
        Import-DscResource -ModuleName PSDesiredStateConfiguration
    
        Node $computerName
        {
            Script ExecutionPolicy
            {
                SetScript = {
                    Set-ExecutionPolicy RemoteSigned -Force
                }
                TestScript = { $false }
                GetScript  = { @{} }
            }
    
            Script PackageManagementTest
            {
                SetScript = {
                    Get-PackageProvider NuGet -Force | Out-Null
                    Get-PackageProvider Chocolatey -Force | Out-Null
                    Install-Package notepadplusplus -Force
                }
                TestScript = { $false }
                GetScript  = { @{} }
                DependsOn = "[Script]ExecutionPolicy"
            }
        }
    }
    

    您可以尝试使用xPowerShellExecutionPolicy 资源,而不是使用脚本资源来设置执行策略。 Install instructions herehere's a sample DSC configuration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多