我正在調試v4.0附帶的PowerShell DSC資源。 更具體地說,我通過添加診斷日誌來測試MSFT_ProcessResource。 在對資源進行更改並運行配置以執行資源之後,我看不到我剛添加的日誌記錄。最終幾分鐘後,PowerShell似乎刷新了它擁有的任何資源緩存。 我試過 獲取-DscResource和 導入模塊MSFT_ProcessResource刷新PowerShell DSC資源
其中沒有工作。
有沒有辦法強制重新加載資源?
我正在調試v4.0附帶的PowerShell DSC資源。 更具體地說,我通過添加診斷日誌來測試MSFT_ProcessResource。 在對資源進行更改並運行配置以執行資源之後,我看不到我剛添加的日誌記錄。最終幾分鐘後,PowerShell似乎刷新了它擁有的任何資源緩存。 我試過 獲取-DscResource和 導入模塊MSFT_ProcessResource刷新PowerShell DSC資源
其中沒有工作。
有沒有辦法強制重新加載資源?
DSC引擎緩存資源以提高性能。
有兩種方法來重新加載資源:
1)重新啓動過程託管DSC引擎(殺死WMI提供程序主機,然後重新運行配置)
2)使用調試模式,這將導致DSC到(開發資源的時候非常有用,但不建議經常性工作)自動重新加載資源:
LocalConfigurationManager
{
DebugMode = $true
}
你可以閱讀更多關於調試模式在這裏: http://blogs.msdn.com/b/powershell/archive/2014/04/22/debug-mode-in-desired-state-configuration.aspx
根據您提到的參考資料,這是一個v5功能。很適合v5場景,但OP將它們的問題標記爲powershell-4.0,因此目前可能沒有幫助 –
這現在已經改變了與WMF 5,而不是$真正的調試模式有以下選項。
在示例中使用該DSC的配置是這樣的:
Configuration myChocoConfig2
{
Import-DscResource -Module cChoco
Node "localhost"
{
LocalConfigurationManager
{
DebugMode = 'All'
}
cChocoInstaller installChoco
{
InstallDir = "c:\choco"
}
cChocoPackageInstaller installChrome
{
Name = "sysinternals"
DependsOn = "[cChocoInstaller]installChoco"
}
}
}
{ 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
同樣的問題,在這裏,你設法取得任何進展? – foobarcode
我發現我在修改系統文件夾中的資源時必須重新啓動WMI windows服務。或者,如果我正在對程序文件中的資源進行更改,則更改會立即反映出來 – user21479
感謝您的反饋 – foobarcode