Powershell DSC 5.0 - 资源的使用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Powershell DSC 自带了一些常见的资源。如果需要新的,可以下载安装 DSC Resource Kit 10或者从Powershell Gallery下载。比如说查看当前已经安装了的资源PS
千家信息网最后更新 2026年11月03日Powershell DSC 5.0 - 资源的使用
Powershell DSC 自带了一些常见的资源。如果需要新的,可以下载安装 DSC Resource Kit 10或者从Powershell Gallery下载。
比如说查看当前已经安装了的资源
PS C:\Windows\system32> Get-DscResourceImplementedAs Name ModuleName Version Properties ------------- ---- ---------- ------- ---------- Binary File {DestinationPath, Attributes, Checksum, Content...PowerShell Archive PSDesiredStateConfiguration 1.1 {Destination, Path, Checksum, Credential...} PowerShell Environment PSDesiredStateConfiguration 1.1 {Name, DependsOn, Ensure, Path...} PowerShell Group PSDesiredStateConfiguration 1.1 {GroupName, Credential, DependsOn, Description...}Binary Log PSDesiredStateConfiguration 1.1 {Message, DependsOn, PsDscRunAsCredential} PowerShell Package PSDesiredStateConfiguration 1.1 {Name, Path, ProductId, Arguments...} PowerShell Registry PSDesiredStateConfiguration 1.1 {Key, ValueName, DependsOn, Ensure...} PowerShell Script PSDesiredStateConfiguration 1.1 {GetScript, SetScript, TestScript, Credential...} PowerShell Service PSDesiredStateConfiguration 1.1 {Name, BuiltInAccount, Credential, Dependencies...PowerShell User PSDesiredStateConfiguration 1.1 {UserName, DependsOn, Description, Disabled...} PowerShell WaitForAll PSDesiredStateConfiguration 1.1 {NodeName, ResourceName, DependsOn, PsDscRunAsC...PowerShell WaitForAny PSDesiredStateConfiguration 1.1 {NodeName, ResourceName, DependsOn, PsDscRunAsC...PowerShell WaitForSome PSDesiredStateConfiguration 1.1 {NodeCount, NodeName, ResourceName, DependsOn...} PowerShell WindowsFeature PSDesiredStateConfiguration 1.1 {Name, Credential, DependsOn, Ensure...} PowerShell WindowsOptionalFeature PSDesiredStateConfiguration 1.1 {Name, DependsOn, Ensure, LogLevel...} PowerShell WindowsProcess PSDesiredStateConfiguration 1.1 {Arguments, Path, Credential, DependsOn...} PowerShell xArchive xPSDesiredStateConfiguration 3.5.0.0 {Destination, Path, CompressionLevel, DependsOn...PowerShell xDSCWebService xPSDesiredStateConfiguration 3.5.0.0 {CertificateThumbPrint, EndpointName, AcceptSel...PowerShell xGroup xPSDesiredStateConfiguration 3.5.0.0 {GroupName, Credential, DependsOn, Description...}PowerShell xPackage xPSDesiredStateConfiguration 3.5.0.0 {Name, Path, ProductId, Arguments...} PowerShell xPSEndpoint xPSDesiredStateConfiguration 3.5.0.0 {Name, AccessMode, DependsOn, Ensure...} PowerShell xRemoteFile xPSDesiredStateConfiguration 3.5.0.0 {DestinationPath, Uri, Credential, DependsOn...} PowerShell xService xPSDesiredStateConfiguration 3.5.0.0 {Name, BuiltInAccount, Credential, Dependencies...PowerShell xWindowsOptionalFeature xPSDesiredStateConfiguration 3.5.0.0 {Name, DependsOn, Ensure, LogLevel...} PowerShell xWindowsProcess xPSDesiredStateConfiguration 3.5.0.0 {Arguments, Path, Credential, DependsOn...}下面是一些常见的例子:
拷贝文件 资源叫做 File
configuration TestFile { Node sydittest { File ZipFile { Ensure = "Present" Type = "Directory" # Default is "File" Force = $True Recurse = $True SourcePath = '\\sydit01\test' DestinationPath = 'C:\Downloads' # On Sydittest } }}TestFile -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force查看该zip文件已经拷贝了

2.解压zip文件,资源叫做 Archive
configuration TestArchive { Node sydittest { Archive Unzip{ Destination = 'C:\unzip' Path = 'c:\downloads\temp.zip' Checksum = 'SHA-256' Validate = $true Force = $true Ensure = 'Present' } }}TestArchive -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -Force该文件已经解压到指定目录

3. 创建环境变量 资源叫做Environment
configuration TestEnvVar { Node sydittest { Environment NewVar{ Name = 'MYNEWVAR' Value = 'Value to store' Ensure = 'Present' } }}TestEnvVar -OutputPath c:\DSC\Mod5Config确认该环境变量已经创建
4.创建本地用户 资源是User
这个是几个资源里面相对麻烦的一个,因为默认传递的是明文,他不会允许你推送的,我需要明确告诉他允许明文。
configuration TestUser{ param ( [PSCredential]$Credential ) node sydittest { User TestUser { UserName = $Credential.UserName Ensure = 'Present' Password = $Credential Description = 'User created by DSC' PasswordNeverExpires = $true PasswordChangeNotAllowed = $true } }}$ConfigData = @{ AllNodes = @( @{ NodeName = 'sydittest' PSDscAllowPlainTextPassword=$true } ) } TestUser -ConfigurationData $ConfigData -Credential (Get-Credential) -OutputPath c:\DSC\Mod5Config可以看见是明文发送的,如果是生产环境,需要用证书加密的才行。
推送出去
Start-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force
可以看见用户已经创建了
5.创建本地组 资源 Group
configuration TestGroup { Node sydittest { Group CreateGroup { Ensure = 'Present' GroupName = 'TestGroup' Description = 'This is a DSC test group' Members = 'administrator' } }}TestGroup -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force6.创建注册表键 资源 Registry
configuration TestRegistry { Node sydittest { Registry CreateReg { Key = 'HKEY_Local_Machine\Software\DSCTest' ValueName = 'DSCTestGood' ValueType = 'string' ValueData = 'True' } }}Testregistry -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force确认成功创建
7. 创建进程(运行某个程序) 资源是 Windowsprocess
configuration TestProcess { Node sydittest { WindowsProcess CreateNotepad { Path = 'notepad.exe' Arguments = '' } WindowsProcess CreatePaint { Path = 'mspaint.exe' Arguments = '' } }}TestProcess -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force确认
8. 更改服务的状态
configuration TestService { Node sydittest { Service StartAudio { Name = 'Audiosrv' State = 'Running' StartupType = 'Automatic' } }}TestService -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force更改前
更改
更改后
9. 脚本资源
这个是当现有的资源都无法满足需求的时候,可以进行自定义资源。里面有3个子模块,test,set,get
首先通过 test 判断状态,返回一个boolean值,如果是true,忽略;如果是false,那么在set里面进行处理;相当于于一个if else的判断语句。get可以通过getdsc的命令获取当前状态
下面的例子是判断如果bits服务开启,那么关闭
configuration TestScript { Node sydittest { Script TestScript { GetScript = { @{ GetScript = $GetScript SetScript = $setScript TestScript = $TestScript Result = (Get-Service -name bits).status } } SetScript = { stop-Service -name bits } TestScript = { $Status=(Get-service -name bits).status $Status -eq 'stopped' } } }}Testscript -OutputPath c:\DSC\Mod5ConfigStart-DscConfiguration -computername sydittest -Path c:\dsc\Mod5Config -Wait -Verbose -force
资源
文件
明文
状态
环境
例子
变量
常见
拷贝
用户
推送
服务
成功
个子
可以通过
命令
时候
模块
比如说
注册表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
湖北九亚互联网络科技有限公司
博彦科技互联网金融
中国互联网科技股
互联网金融与金融科技
深圳互联网络科技有限公司
未来的互联网科技
兼蜜互联网科技
一五八零互联网科技
互联网金融和金融科技
互联网金融科技委员会
无锡溥仪互联网科技有限公司
广州慧亚互联网科技怎么样
上海宁丞科技互联网
新兴科技互联网创新大赛颁奖典礼
搜狐科技互联网
济南有互联网科技公司吗
产业互联网科技服务公司
互联网科技职业技能培训学校
长沙易易互联网科技有限公司
互联网科技公司
百单网互联网科技有限公司
互联网和科技技术
美国互联网科技
礼当家互联网科技
天下捷融互联网科技
互联网高科技股票
互联网科技项目计划书材料类
互联网科技扶贫时间
互联网领先科技宣传片