我正在尝试使用 PowerShell DSC 从网络共享复制文件夹内容。这是代码:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用 - 当我运行它时,我收到以下错误消息:
The related file/directory is: \\Server\SomeShare\SomeFolder.
The path cannot point to the root directory or to the root of a net share.
SourcePath must be specified if you want to configure the destination directory recursively. Make sure that SourcePath is a directory and that it is accessible.
+ CategoryInfo : …Run Code Online (Sandbox Code Playgroud) 我有一个第三方颁发的证书,我需要确保它在给定域中的所有目标上运行。有没有办法确保通过 DSC 安装此证书?
有没有办法从当前系统构建 PowerShell 所需状态配置 (DSC) 配置文件?反对从头开始构建整个文件?
我正在尝试使用 PowerShell DSC 将域组添加到本地管理员组。这是代码:
Configuration TestSetup {
Node localhost {
Group Administrators {
GroupName = "Administrators"
MembersToInclude = "MYDOMAIN\TheAdministratorsGroup"
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,这会导致以下错误:
PowerShell provider MSFT_GroupResource failed to execute Test-TargetResource functionality with error message: Could not find a principal with the provided name [mydomain\theadministratorsgroup]
+ CategoryInfo : InvalidOperation: (:) [], CimException
+ FullyQualifiedErrorId : ProviderOperationExecutionFailure
+ PSComputerName : localhost
Run Code Online (Sandbox Code Playgroud)
主体确实存在,我可以通过 GUI 手动添加它并使用net localgroup.
我知道 DSC 配置是在该SYSTEM帐户下执行的,所以我认为这可能是SYSTEM想要查询 Active Directory的帐户的权限问题。但是,我已经SYSTEM使用 PsExec将 cmd 作为帐户运行,并且能够毫无问题地将域组添加到本地管理员组。
我是 DSC 的新手,并试图弄清楚如何让它为我们工作。
我所坚持的是凭据实际上是如何受到保护的。我目前的理解是,它并不是那么好。
三大问题就是这些。使用公钥作为解密源如何真正保护这些凭据?推拉场景下哪些电脑需要证书?鉴于这些问题,处理凭证的最佳做法是什么?
使用证书的公钥有利于验证传输的来源。但是使用它作为解密密钥意味着对证书公钥的访问决定了对密码的访问。
如果您必须将证书推送到需要解密 MOF 文件的每台计算机,有什么可以阻止普通用户访问证书并能够解密 MOF?说活动目录安全意味着您也可以将其保留为纯文本并仅依靠 AD 安全。
有人可以帮我解决这个问题吗?
我在 ITPro.tv 上观看了有关PowerShell Desired State Configuration DSC的视频。他们引入它,并有效地运行脚本。然而,这也是他们第一次(真正)引入脚本,所以我没有发现 DSC 和常规脚本之间的区别。我以前做过一些常规脚本,也许他们只是没有那么好的例子;似乎常规脚本可以安装角色/功能并复制一些文件就好了。与脚本相比,我没有看到 DSC 的好处。除了能够轮询某种变化的机器之外,他们在实践中没有涵盖,只是在理论上。
DSC 相对于传统脚本的优势是什么?例如“安装角色,复制文件”?
如果我将 DSC 配置嵌套在这样的单个文件中,它可以正常工作:
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose
Run Code Online (Sandbox Code Playgroud)
我想将我的配置分成两个单独的文件。一个将点源另一个以包含配置。
次要.ps1:
Configuration Secondary {
Param ($SomeParameter)
Environment Test {
Name = $SomeParameter
Value = "12345"
}
}
Run Code Online (Sandbox Code Playgroud)
主要.ps1:
. .\Secondary.ps1
Configuration MyConfiguration {
Node localhost {
Secondary TheSecondary {
SomeParameter = "TestEnvVar"
}
}
}
MyConfiguration
Start-DscConfiguration .\MyConfiguration -Wait -Verbose …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Amazon EC2 上的 Windows Server 2012 实例上测试 PowerShell Desired State 配置。我从 MS 下载中心下载了 Windows Management Framework 4.0:
Windows 管理框架 4.0
http://www.microsoft.com/en-au/download/details.aspx?id=40855
尝试安装时,我遇到了以下错误:
由于错误 2148098050“消息签名者的证书无效或未找到”,无法安装 Windows 更新。(命令行: ""C:\Windows\system32\wusa.exe" "C:\Users\Administrator\Downloads\Windows6.1-KB2819745-x64-MultiPkg.msu" ")
代码签名安装程序通常将证书作为二进制文件的一部分。我只是右键单击该包并从 MSU 手动提取证书并将其安装在本地机器证书存储中以确保签名者是可信的。当我再次尝试安装该软件包时,收到一个新错误:
由于错误 2148073480“指定的算法无效”,无法安装 Windows 更新。(命令行: ""C:\Windows\system32\wusa.exe" "C:\Users\Administrator\Downloads\Windows6.1-KB2819745-x64-MultiPkg.msu" ")
任何人都可以帮助解决上述问题吗?
所以我使用的是 DSC 推送模式
我每天有大约 200 次部署到多个环境 (DEV/INT/QA/PROD)
每次部署时,我都想确保每个服务器都配置正确
所以我自动运行 DSC 作为我部署的一部分,完全没有用户交互
所以我想知道是否有办法知道在运行 DSC 配置后是否需要重新启动/重启
基本上在运行这条线之后
Start-DscConfiguration -Wait -Force -Path .\SomePath
Run Code Online (Sandbox Code Playgroud)
我如何配置包的示例
Package MVC3
{
Name = "Microsoft ASP.NET MVC 3"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
Arguments = "/q"
DependsOn = "[WindowsFeature]IIS"
Credential = $Credential
}
Package MVC4
{
Name = "Microsoft ASP.NET MVC 4 Runtime"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
Arguments = "/q"
DependsOn = "[Package]MVC3"
Credential = $Credential
}
Run Code Online (Sandbox Code Playgroud) 来自MSDN
RebootNodeIfNeeded:目标节点上的某些配置更改可能需要重新启动它才能应用更改。值为“true”时,此属性将立即重新启动节点,而不会发出警告。如果为“false”,则配置将完成,但必须手动重新启动节点以使更改生效。
所以我的理解是,即使需要重启,DSC 也应该运行所有配置
但在我的情况下,这不是真的,在安装包后,有时 DSC 被标记为重新启动并且 DSC 不运行其余的配置
我必须再次手动执行命令才能运行其余配置
Start-DscConfiguration -Wait -Force -Path .\SomePath
Run Code Online (Sandbox Code Playgroud)
我想强制 DSC 运行所有配置,然后通知我是否需要重新启动服务器
我如何配置包的示例
LocalConfigurationManager
{
RebootNodeIfNeeded = $false
}
Package MVC3
{
Name = "Microsoft ASP.NET MVC 3"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
Arguments = "/q"
DependsOn = "[WindowsFeature]IIS"
Credential = $Credential
}
Package MVC4
{
Name = "Microsoft ASP.NET MVC 4 Runtime"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
Arguments = "/q" …Run Code Online (Sandbox Code Playgroud)