gpt4 book ai didi

powershell - 为什么此脚本资源未安装Chocolatey软件包?

转载 作者:行者123 更新时间:2023-12-02 23:59:51 25 4
gpt4 key购买 nike

我正在尝试编写所需的状态配置,该配置通过PackageManagement(aka OneGet)安装软件包。程序包“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\"

最佳答案

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

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

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

关于powershell - 为什么此脚本资源未安装Chocolatey软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32641045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com