Azure PowerShell DSC安装额外模块
作为Azure资源组模板的一部分,我为我的VM设置了PowerShell DSC扩展,它提供了各种Windows功能 作为这个自动设置的一部分,我希望能够在防火墙中打开一些端口,经过一点研究后,我发现有一个xFirewall DSC模块可用。我的问题是如何在DSC执行之前自动将此模块安装到Azure VM上 我的配置如下所示:Azure PowerShell DSC安装额外模块,powershell,azure,azure-powershell,dsc,Powershell,Azure,Azure Powershell,Dsc,作为Azure资源组模板的一部分,我为我的VM设置了PowerShell DSC扩展,它提供了各种Windows功能 作为这个自动设置的一部分,我希望能够在防火墙中打开一些端口,经过一点研究后,我发现有一个xFirewall DSC模块可用。我的问题是如何在DSC执行之前自动将此模块安装到Azure VM上 我的配置如下所示: 主配置 { 参数([string]$nodeName) 导入DscResource-ModuleName PSDesiredStateConfiguration 导入DS
主配置
{
参数([string]$nodeName)
导入DscResource-ModuleName PSDesiredStateConfiguration
导入DSCRSource-ModuleName xFirewall
节点$nodeName
由于未安装模块,xFirewall的导入失败
我曾考虑过创建另一个DSC脚本,它可以在这个脚本之前运行,但事实证明这很困难,因为一次只能将一个DSC扩展连接到VM。请参阅本文中的如何使用和发现DSC资源
假设您将xFirewall模块作为DSCRSource的一部分删除,
首先需要导入模块,我认为这是xNetworking
,使用import module{FullPath}
,然后是import DSCResource-ModuleName xNetworking-name xFirewall
或者尝试导入DSCResource-Name xFirewall,这将使它扫描整个资源文件夹并为您找到xFirewall。您需要导入的模块是xNetworking模块,资源是xFirewall。因此,DSC脚本的简单示例如下所示
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xNetworking
Node $nodeName
{
xFirewall Firewall
{
Name = "AllowNotepad"
Program = "c:\windows\system32\notepad.exe"
Action = "Allow"
}
}
}
若要将其放入资源组部署模板中,您需要将复制到添加PowerShell DSC扩展时创建的DSC文件夹下的项目中。然后将xNetworking文件夹添加到项目中,如图所示
接下来,检查您的正常部署过程。现在您有了DSC扩展,不同之处在于您需要在部署之前指定一个工件存储帐户
项目中的Deploy-AzureResourceGroup.ps1脚本将把DSC.zip上载到存储帐户中,其中现在包括您的xNetworking模块,以便Azure资源管理器(ARM)在设置扩展后,可以将其推入虚拟机。从那里,虚拟机中的DSC引擎将接管并应用配置。是否使用Visual Studio编写/编辑模板?1.xNetworking是包含xFirewall的模块的名称2.是否使用Publish AzureVMDscConfiguration以创建扩展名Zip文件?如果是,则应将模块包含在Zip中。您好@Rick Rainey,执行此操作时,请不要将模块复制到输出目录或Azure存储。是否需要其他步骤?PowerShell脚本在过去一年中发生了更改,现在需要您安装在本地计算机上安装模块。因此,您必须更改脚本以手动打包项目中的模块(以前的工作方式-我认为这是首选),或者只需在开发人员框上安装模块。查看PowerShell脚本,您就会明白我在说什么。