[英]Refresh PowerShell DSC resource
我正在调试v4.0附带的PowerShell DSC资源。 更具体地说,我通过添加诊断日志来测试MSFT_ProcessResource。 在我更改资源并运行我运行资源的配置后,我没有看到刚添加的日志记录。 最终几分钟后,PowerShell似乎刷新了它拥有的任何资源缓存。 我尝试过Get-DscResource和Import-Module MSFT_ProcessResource
这些都没有奏效。
有没有办法强制重新加载资源?
DSC引擎缓存资源以提高性能。
有两种方法可以重新加载资源:
1)重启进程托管DSC引擎(杀死WMI Provider Host并重新运行配置)
2)使用调试模式,这将导致DSC自动重新加载资源(在开发资源时很有用,但不建议用于常规工作):
LocalConfigurationManager
{
DebugMode = $true
}
您可以在此处阅读有关调试模式的更多信息: http : //blogs.msdn.com/b/powershell/archive/2014/04/22/debug-mode-in-desired-state-configuration.aspx
{ LocalConfigurationManager { DebugMode = "All" } }
用于清除缓存的PowerShell脚本是:
$dscProcessID = Get-WmiObject msft_providers |
Where-Object {$_.provider -like 'dsctimer'} |
Select-Object -ExpandProperty HostProcessIdentifier
if ($dscProcessID -eq $null) {
Write-Host "DSC timer is not running."
return
}
Write-Host "Process ID: $dscProcessID"
Get-Process -Id $dscProcessID | Stop-Process -Force
Restart-Service -Name winmgmt -Force -Verbose
现在用WMF 5改变了,而不是$ true调试模式有以下选项。
在示例DSC配置中使用它将如下所示:
Configuration myChocoConfig2
{
Import-DscResource -Module cChoco
Node "localhost"
{
LocalConfigurationManager
{
DebugMode = 'All'
}
cChocoInstaller installChoco
{
InstallDir = "c:\choco"
}
cChocoPackageInstaller installChrome
{
Name = "sysinternals"
DependsOn = "[cChocoInstaller]installChoco"
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.