我希望能够将DSC配置对象传递给帮助程序函数/cmdlet,以便更轻松地使用它们。
此类配置的示例如下:
[DSCLocalConfigurationManager()]
configuration LCMConfig
{
Node $AllNodes.NodeName
{
Settings
{
ActionAfterReboot = 'ContinueConfiguration'
ConfigurationMode = 'ApplyOnly'
RebootNodeIfNeeded = $true
}
}
}
有没有办法做类似的事情
MyHelperFunction `
-ConfigurationName LCMConfig `
-ConfigurationData $configurationData `
-Credential $administratorCredential
LCMConfig
配置被传递到MyHelperFunction
谁能随心所欲地使用它?
好的,
我终于想出了该怎么做。您可以通过以下方式做到这一点:
$configuration = Get-Command $ConfigurationName
Invoke-DscConfiguration `
-Configuration $configuration `
-ConfigurationData $configurationData `
-Credential $administratorCredential
Invoke-DscConfiguration
在哪里:
function Invoke-DscConfiguration
{
[CmdletBinding()]
[OutputType([String])]
Param
(
[Parameter(Mandatory=$true)]
[System.Management.Automation.ConfigurationInfo]$Configuration,
[Parameter(Mandatory=$true)]
[Hashtable]$ConfigurationData,
[Parameter(Mandatory=$true)]
[PSCredential]$Credential,
[Switch]$IsLCMConfiguration,
[HashTable]$ConfigurationParameters
)
$ErrorActionPreference = 'Stop'
$outputPath = Get-TemporaryDscDirectory
Write-Verbose "Compiling the '$($ConfigurationName.Name)' configuration."
& $Configuration -ConfigurationData $ConfigurationData -OutputPath $outputPath | Out-Null
Write-Verbose "Executing the '$($ConfigurationName.Name)' configuration."
if ($IsLCMConfiguration)
{
Set-DscLocalConfigurationManager -Path $outputPath -Force -Credential $Credential -Verbose
}
else
{
Start-DscConfiguration -Path $outputPath -Force -Wait -Credential $Credential -Verbose
}
}