2

元の DSC リソースを拡張して、ソースに存在しないファイルが宛先で確実に削除されるようにするためのサポートFileを追加したいと考えています。これを行うには、逆アセンブラーでコードをチェックするか、 ReferenceSourceのような場所で実装を見つけようとすることで、元のものがどのように実装されているかを少なくとも知りたいのですが、私の人生ではdllがどこにあるかを見つけることはできませんリソースを実装する は私のコンピューターにあります。

Get-DscResource FilePowerShell でコマンドを発行すると、Moduleプロパティが空になります。次に、オブジェクト自体を調べて、何かが発生したかどうかを確認しようとしましたが、Pathプロパティも空ですが、プロパティは、バイナリ dll ではなくメタデータ ファイルのみを含む をParentPath指しています。C:\Windows\system32\Configuration\Schema\MSFT_FileDirectoryConfiguration

リンクした他の質問で説明されている方法を使用して、おそらくこれを回避できることはわかっていますが、この動作を行うには多くのフォルダーが必要であり、それらのスクリプトをそのように維持することは問題になります。

理想的には、元のクラスを拡張してこの動作を追加することが可能ですが、これが可能になるとは考えていません。この機能を追加するためのベースラインとして元の実装が欲しかっただけです。

これらすべてを念頭に置いて、特定のバイナリ DSC リソースの機能を実装する実際の dll はどこにありますか?

4

1 に答える 1

2

少し掘り下げてみましたが、痛々しいほど明らかな何かを見落としていない限り、File リソースは "C:\Windows\System32\DscCoreConfProv.dll" にあると思います。

MSFT_FileDirectoryConfigurationは既に見つかりました。このための WMI クラスは root\Microsoft\Windows\DesiredStateConfiguration 名前空間にあります。

> Get-WmiObject -Namespace "root\Microsoft\Windows\DesiredStateConfiguration" -List | `
  Where-Object { $_.Name -eq "MSFT_FileDirectoryConfiguration" } | `
  ft

   NameSpace: ROOT\Microsoft\Windows\DesiredStateConfiguration

Name                                Methods              Properties
----                                -------              ----------
MSFT_FileDirectoryConfiguration     {GetTargetResourc... {Attributes,     Checksum, Contents, CreatedDate...}

これは、 dsccoreおよびDSCCoreProviders WMI プロバイダーによって処理されます。

> Get-WmiObject -Namespace "root\Microsoft\Windows\DesiredStateConfiguration" -Class "__Win32Provider" | `
  Select-Object @( "Name", "CLSID" ) | `
  ft *

Name             CLSID
----             -----
dsccore          {BADCC35D-8542-4A5C-A457-0ECCCF62508A}
DSCCoreProviders {F04C3F9B-20B3-40E1-A824-3A41FE3D7931}

それがDSCCoreProvidersプロバイダーであると仮定して、CLSID の背後にある dll を見つけます。

> New-PSDrive -Name "HKCR" -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT"
> (Get-ItemProperty -LiteralPath "HKCR:\CLSID\{F04C3F9B-20B3-40E1-A824-3A41FE3D7931}\InProcServer32")."(default)"

C:\Windows\system32\DscCoreConfProv.dll

ただし、結局のところ、ファイルは .NET Framework dll ではないため、逆アセンブルに問題が生じる可能性があります。

于 2015-05-15T18:21:00.157 に答える