Powershell DSC在哪里找到模块代码?

Pau*_*och 5 powershell puppet dsc

我在Archive DSC模块中发现了一个错误(MSFT_ArchiveResource.psm1).在复制代码,在ISE中调试代码并找出需要修复的两行之后,我想对真实文件进行更改并使用Puppet和msutter/dsc模块进行测试,该模块使用归档资源.

我发现我认为文件在我的机器上的位置:

C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\DSCResources\MSFT_ArchiveResource\MSFT_ArchiveResource.psm1
Run Code Online (Sandbox Code Playgroud)

但是,当我运行Puppet时,很明显我的更改后的代码没有被执行.(如果我在文件的顶部设置$ Debug = $ true,我没有看到额外的输出.)是否有一些Windows缓存保存此文件,我必须清除?是从ZIP还是其他档案加载?

我怀疑Puppet是否与这个问题有关,但是如果它敲响了铃,就提起它.(我只在代理上进行了代码更改.)

更新:

当我在Powershell中运行以下行时,我找不到任何包含"dsccore"的预期名称的进程:

Get-WmiObject msft_providers | select -ExpandProperty provider
Run Code Online (Sandbox Code Playgroud)

结果:

RegistryEventProvider
PolicyAgentInstanceProvider
CIMWin32
Msft_ProviderSubSystem
SCM Event Provider
Win32_WIN32_TERMINALSERVICE_Prov
WmiPerfClass
WmiPerfClass
WmiPerfInst
WmiPerfInst
Run Code Online (Sandbox Code Playgroud)

bri*_*ist 5

DSC故障排除

我的资源不会更新:如何重置缓存

DSC引擎缓存作为PowerShell模块实现的资源,以提高效率.但是,当您创建资源并同时对其进行测试时,这可能会导致问题,因为DSC将加载缓存版本,直到重新启动该进程.使DSC加载较新版本的唯一方法是明确杀死托管DSC引擎的进程.

要确定承载DSC引擎的进程并基于每个实例停止它,您可以列出托管DSC引擎的WmiPrvSE的进程ID.然后,要更新提供程序,请使用以下命令停止WmiPrvSE进程,然后再次运行Start-DscConfiguration.

###
### find the process that is hosting the DSC engine
###
$dscProcessID = Get-WmiObject msft_providers | 
Where-Object {$_.provider -like 'dsccore'} | 
Select-Object -ExpandProperty HostProcessIdentifier 

###
### Stop the process
###
Get-Process -Id $dscProcessID | Stop-Process
Run Code Online (Sandbox Code Playgroud)