Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure PowerShell DSC安装额外模块_Powershell_Azure_Azure Powershell_Dsc - Fatal编程技术网

Azure PowerShell DSC安装额外模块

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

作为Azure资源组模板的一部分,我为我的VM设置了PowerShell DSC扩展,它提供了各种Windows功能

作为这个自动设置的一部分,我希望能够在防火墙中打开一些端口,经过一点研究后,我发现有一个xFirewall DSC模块可用。我的问题是如何在DSC执行之前自动将此模块安装到Azure VM上

我的配置如下所示:

主配置
{
参数([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脚本,您就会明白我在说什么。