什么是资源?

资源为 DSC 配置提供构建基块。

资源公开可配置的属性,并包含本地配置管理器 (LCM) 调用以“使其如此”的 PowerShell 脚本函数。

系统内置资源

可在PowerShell命令窗中输入Get-DSCResource查看系统内置的资源

(在命令窗中输入命令的时候,可使用tab键进行补全提示)

我们可以看到内置了一些常用的资源,比如File、User等

第三资源

系统内置的资源很可能不能满足我们的需求,我们可以在公共的hub中下载,地址:https://www.powershellgallery.com/

其实这东西和nuget(https://www.nuget.org/)非常的相似,你也可以自己写资源上传,供大家下载使用。

自定义资源

有些时候,系统内置的资源和第三方资源仍然不满足我们的需求,就需要根据具体的业务进行定制资源。

首先需要明白一点:PowerShell DSC配置是围绕 Get 、Test 和 Set 构建的。

以下我们使用基于 MOF 编写自定义 DSC 资源

文件夹结构

$env:ProgramFiles\WindowsPowerShell\Modules (folder)
|- MyDscResources (folder)
|- DSCResources (folder)
|- Demo_IISWebsite (folder)
|- Demo_IISWebsite.psd1 (file, optional)
|- Demo_IISWebsite.psm1 (file, required)
|- Demo_IISWebsite.schema.mof (file, required)

.schema.mof 编写

简单来讲,就是定义当前资源的参数

[ClassVersion("1.0.0"), FriendlyName("Website")]
class Demo_IISWebsite : OMI_BaseResource
{
[Key] string Name;
[Required] string PhysicalPath;
[write,ValueMap{"Present", "Absent"},Values{"Present", "Absent"}] string Ensure;
[write,ValueMap{"Started","Stopped"},Values{"Started", "Stopped"}] string State;
[write] string Protocol[];
[write] string BindingInfo[];
[write] string ApplicationPool;
[read] string ID;
};

.psm1文件编写

资源脚本实现资源的逻辑。 此模块中必须包含三个函数,名称如下:

function Get-TargetResource{
//todo
}
function Set-TargetResource{
//todo
}
function Test-TargetResource{
//todo
}

.psd1文件编写

@{
ModuleVersion = '1.0'
GUID = '6AB5ED33-E923-41d8-A3A4-5ADDA2B301DE'
Author = 'Contoso'
CompanyName = 'Contoso'
Copyright = 'Contoso. All rights reserved.'
FunctionsToExport = @("Get-TargetResource", "Set-TargetResource", "Test-TargetResource")
}

参考

https://docs.microsoft.com/zh-cn/powershell/dsc/resources/resources

5.PowerShell DSC核心概念之资源的更多相关文章

  1. 3.PowerShell DSC核心概念

    PowerShell DSC有三个核心概念 配置 配置是声明性的PowerShell 脚本,用于定义和配置资源实例. DSC 配置是幂等的. 资源 资源是 DSC 的"实现器"部分 ...

  2. 4.PowerShell DSC核心概念之配置

    什么是配置 DSC 配置是定义某一特殊类型函数的 PowerShell 脚本. 配置的语法 Configuration MyDscConfiguration { #配置块 Import-DscReso ...

  3. 6.PowerShell DSC核心概念之LCM

    什么是LCM? 本地配置管理器 (LCM) 是DSC的引擎. LCM 在每个目标节点上运行,负责分析和执行发送到节点的配置. 它还负责 DSC 的许多方面,包括以下各方面. 确定刷新模式(推送或请求) ...

  4. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  5. Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

    由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Build Lifecycle.Goal).用法(Archetype意义及创建各种项目).maven常 ...

  6. 领域驱动设计(DDD)部分核心概念的个人理解(转)

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  7. Angularjs -- 核心概念

     angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建.測试.扩展和维护变得easy.以下是angularjs中的一些核心概念. 1. client模板      多页面的应用通 ...

  8. webpack的四个核心概念介绍

    前言 webpack 是一个当下最流行的前端资源的模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后 ...

  9. webpack核心概念

    一.webpack四个核心概念 1.入口[Entry] webpack将创建所有应用程序 依赖关系图表.图表的起点被称之为 入口起点.入口起点告诉webpack从哪里开始,并遵循着依赖关系图表知道打包 ...

随机推荐

  1. Java进阶专题(二十一) 消息中间件架构体系(3)-- Kafka研究

    前言 Kafka 是一款分布式消息发布和订阅系统,具有高性能.高吞吐量的特点而被广泛应用与大数据传输场景.它是由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 基金会 ...

  2. ctfhub技能树—RCE—过滤空格

    打开靶机 查看页面信息 开始尝试注入 127.0.0.1 || ls 尝试绕过 127.0.0.1||ls 使用cat命令查看flag 127.0.0.11||cat<flag_10872536 ...

  3. C语言------三目运算符(条件运算符)

    今天在看C语言的时候看到了下面的代码(废话少说,直接上代码): #include <stdio.h> int main() {int max(); extern int A,B,C; // ...

  4. [从源码学设计]蚂蚁金服SOFARegistry之配置信息

    [从源码学设计]蚂蚁金服SOFARegistry之配置信息 目录 [从源码学设计]蚂蚁金服SOFARegistry之配置信息 0x00 摘要 0x01 业务范畴 1.1 配置作用 1.2 学习方向 0 ...

  5. allator 对springBoot进行加密

    1.对springboot项目添加jar包和xml文件 allatori.xml: <config> <input> <jar in="target/sprin ...

  6. 性能测试WAS内存使用的探索和分析

    性能测试中,CPU和内存是关注最多的两个性能指标.以我行应用最多的系统架构(WAS+Oracle)来说,CPU使用率高的问题多发生于数据库,比如索引不当引发的表扫描.绑定变量使用不当引发的硬解析.连接 ...

  7. Docker 中的网络功能介绍 外部访问容器 容器互联 配置 DNS

    Docker 中的网络功能介绍 | Docker 从入门到实践 https://vuepress.mirror.docker-practice.com/network/ Docker 允许通过外部访问 ...

  8. 判断2个list中是否有相同的数据(相交)Collections.disjoint

    https://blog.csdn.net/yang_niuxxx/article/details/85092490 private void initData() { for (int i = 0; ...

  9. 回归(Regression)

    回归(Regression) 生活中的很多事物之间是相互影响的,如商品的质量跟用户的满意度密切相关.而回归分析是要分析两个事物间的因果关系,即哪一个是自变量和因变量,以及自变量和因变量之间的关系:回归 ...

  10. Spring Filter过滤表单中的非法字符

    使用Spring Filter过滤表单中的非法字符 1 package test.filter; 2 3 import java.io.IOException; 4 import java.util. ...