Powershell DSC 5.0 - 资源的使用
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Powershell DSC 自带了一些常见的资源。如果需要新的,可以下载安装 DSC Resource Kit 10或者从Powershell Gallery下载。比如说查看当前已经安装了的资源PS
千家信息网最后更新 2025年02月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 -force
6.创建注册表键 资源 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安全错误
数据库的锁怎样保障安全
我是网络安全卫生手抄报图片
一千qps需要多少服务器
山西it软件开发视频
济宁系统软件开发公司
海南 数据库应用技术期末答案
是数据库和用户之间的主要接口
服务器主板功能测试自动化
战锤全面战争有服务器吗
网络安全教育手抄报的句子
ad hoc 网络技术
网络安全巡检申请书
dell服务器 更换硬盘
专科网络安全技术应用学编程吗
安卓实现图片加载上传服务器
徐州运营网络技术市场价格
加强民警网络安全教育
兆易创新招聘软件开发
服务器内存什么意思
双代号网络技术论文
福建网络技术开发哪个正规
一千qps需要多少服务器
山东海迪科技互联网有限公司
佛山东汇网络技术
热点网络安全密钥在哪里
物集西游数据库修改
服务器仓库管理软件有哪些
服务器怎么开启
中国ntp服务器ip地址
网络安全法解读责任
亳州服务器机柜过滤器