为什么这个脚本资源没有安装Chocolatey软件包?

时间:2015-09-17 22:38:35

标签: powershell chocolatey package-management

我试图编写一个通过PackageManagement(又名OneGet)安装软件包的所需状态配置。包#34; notepadplusplus"来自Chocolatey存储库,但我想使用PackageManagement而不是Chocolatey客户端。我无法找到DSC资源,因此我使用了脚本资源。

DSC运行没有错误,Notepad ++显示在包列表中但从未实际安装过(Notepad++.exe在系统中无处可用。)

我在Windows 10 VM上运行。

以下是我正在做的事情的简化示例。有人发现我做错了吗?

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\"

1 个答案:

答案 0 :(得分:0)

this issue in OneGet引起,您必须通过Set-ExecutionPolicy启用scrips或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