web-dev-qa-db-ja.com

WMF5.1以降、DSC環境リソースが機能しなくなりました-PATH値が検出されませんか?

環境リソースを使用してパス値を設定する部分DSCスクリプトがいくつかあります。これを行う2つのスクリプトがあり、WMF5.0からWMF5.1にアップグレードした後、DscConfigurationsを起動すると次のエラーが発生します。

VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = ApplyConfiguration,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer MYCOMPUTER with user sid S-1-5-21-1064954374-356710528-937385128-34335.
VERBOSE: [DESTCOMPUTER]:                            [] Starting consistency engine.
The resources ('[Environment]SetInstantClientPath' and '[Environment]SqlCmdPath') have conflicting values of the following properties: 'Value'. Ensure that their values match.  Merging of partial configurations failed. LCM 
failed to start desired state configuration manually.
    + CategoryInfo          : ResourceExists: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 11
    + PSComputerName        : DESTCOMPUTER

1つのスクリプトがこれを行います:

Environment SqlCmdPath {
    Name = "Path"
    DependsOn = "[Package]InstallSQLServer2012CmdLineUtils_64bit"
    Ensure = "Present"
    Path = $true
    Value = "$env:ProgramFiles\Microsoft SQL Server\110\Tools\Binn"
}

そして、他のスクリプトはこれを行います:

Environment SetInstantClientPath {
    Name = "Path"
    DependsOn = "[Archive]InstallInstantClientBasic","[Archive]InstallInstantClientSqlplus"
    Ensure = "Present"
    Path = $true
    Value = "$env:SystemDrive\instantclient_11_2"
}

これは、WMF5.0から問題なく実行されていました。

WMF5.1以降、何か変更がありましたか?

4
Eric

同じNameパラメーター値を持つ2つの環境リソース(変数)があります。これにより、エンジンが環境変数を作成するときに競合が発生する可能性があります。次のようなものに変更することをお勧めします。

Environment SqlCmdPath {
    Name = "SqlCmdPath"
    DependsOn = "[Package]InstallSQLServer2012CmdLineUtils_64bit"
    Ensure = "Present"
    Path = $true
    Value = "$env:ProgramFiles\Microsoft SQL Server\110\Tools\Binn"
}
Environment SetInstantClientPath {
    Name = "SetInstantClientPath"
    DependsOn = "[Archive]InstallInstantClientBasic","[Archive]InstallInstantClientSqlplus"
    Ensure = "Present"
    Path = $true
    Value = "$env:SystemDrive\instantclient_11_2"
}

https://msdn.Microsoft.com/en-us/powershell/dsc/environmentresource

簡単な更新ですが、現在、この正確な問題に関してMSFTにリクエストがあります...

https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11088876-dsc-environment-resource-does-not-allow-duplicate

2
Colyn1337