guitarrapc / GraniResource

PowerShell Desired State Configuration Resources for real production workload.
https://www.powershellgallery.com/packages/GraniResource
MIT License
44 stars 8 forks source link

cACL cannot be applied to hidden files/folders #89

Open mkht opened 3 years ago

mkht commented 3 years ago

Description

Attempt to configure ACLs for hidden files/folders using the cACL resource. The resource will fail to configure with an error that the target item is not found.

The DSC configuration that is used to reproduce

Configuration ACLChange
{
    Import-DscResource -ModuleName GraniResource

    node Localhost
    {
        File CreateHiddenFile
        {
            Ensure            = "Present"
            DestinationPath   = "C:\host.txt"
            Type              = "file"
            Contents          = "hoge"
            Attributes        = "Hidden"
        }

        cACL FullCONTROL2HiddenFile
        {
            Ensure    = "Present"
            Path      = "C:\host.txt"
            Account   = "Users"
            Rights    = "FullControl"
            DependsOn = "[File]CreateHiddenFile"
        }
    }
}

ACLChange -Outputpath C:\dsc
Start-DscConfiguration -Path C:\dsc -Wait -Force -Verbose

Verbose logs

詳細: パラメーター ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespa
ceName' = root/Microsoft/Windows/DesiredStateConfiguration' を使用して操作 'CimMethod の呼び出し' を実行します。
詳細: コンピューター DESKTOP-VGGPFV5、ユーザー SID S-1-5-21-3120317167-2218312622-2814593748-500 から LCM メソッドが呼び出されました。
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     設定       ]
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     リソース     ]  [[File]CreateHiddenFile]
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     テスト      ]  [[File]CreateHiddenFile]
詳細: [DESKTOP-VGGPFV5]:                            [[File]CreateHiddenFile] 指定されたファイルが見つかりません。
詳細: [DESKTOP-VGGPFV5]:                            [[File]CreateHiddenFile] 関連するファイル/ディレクトリは C:\host.txt です
。
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 終了     テスト      ]  [[File]CreateHiddenFile]  (0.0000 秒)。
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     設定       ]  [[File]CreateHiddenFile]
詳細: [DESKTOP-VGGPFV5]:                            [[File]CreateHiddenFile] 指定されたファイルが見つかりません。
詳細: [DESKTOP-VGGPFV5]:                            [[File]CreateHiddenFile] 関連するファイル/ディレクトリは C:\host.txt です
。
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 終了     設定       ]  [[File]CreateHiddenFile]  (0.0000 秒)。
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 終了     リソース     ]  [[File]CreateHiddenFile]
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     リソース     ]  [[cACL]FullCONTROL2HiddenFile]
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 開始     テスト      ]  [[cACL]FullCONTROL2HiddenFile]
項目 C:\host.txt が見つかりませんでした。
    + CategoryInfo          : ObjectNotFound: (C:\host.txt:) [], CimException
    + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetItemCommand
    + PSComputerName        : Localhost

null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] Using non-strict name che
cking. It split AccountName with \''.
null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] Current ACL result.
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] Desired ACL result.
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] 

FileSystemRights  : FullControl
AccessControlType : Allow
IdentityReference : Users
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] Result does not match as 
desired. Showing Desired v.s. Current Status.
null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] DesiredFileSystemRights :
 FullControl
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] CurrentFileSystemRights :
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] StrictResult            :
 False
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] NoneStrictResult        :
 False
null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] DesiredAccessControlType 
: Allow
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] CurrentAccessControlType 
:
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] StrictResult             
: False
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] NoneStrictResult         
: False
null 値の式ではメソッドを呼び出せません。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] DesiredInherit   :
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] CurrentInherit   :
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] StrictResult     : False
詳細: [DESKTOP-VGGPFV5]:                            [[cACL]FullCONTROL2HiddenFile] NoneStrictResult : False
詳細: [DESKTOP-VGGPFV5]: LCM:  [ 終了     テスト      ]  [[cACL]FullCONTROL2HiddenFile]  (0.8280 秒)。
Test-TargetResource 機能の実行中に PowerShell DSC リソース [cACL]FullCONTROL2HiddenFile (SourceInfo '::16::9::cACL')
 が 1 つ以上の終了しないエラーをスローしました。これらのエラーは、Microsoft-Windows-DSC/Operational という名前の ETW チャネルに記録されます。詳細については、このチャネ
ルを参照してください。
    + CategoryInfo          : InvalidOperation: (:) []、CimException
    + FullyQualifiedErrorId : NonTerminatingErrorFromProvider
    + PSComputerName        : Localhost

詳細: [DESKTOP-VGGPFV5]: LCM:  [ 終了     設定       ]
SendConfigurationApply 関数が失敗しました。
    + CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 1
    + PSComputerName        : Localhost

詳細: 操作 'CimMethod の呼び出し' が完了しました。
詳細: 構成ジョブが完了するまでにかかった時間は 2.406 秒です

Environments

PS C:\> Get-ComputerInfo
OsName               : Microsoft Windows 10 Education
OsOperatingSystemSKU : 121
OsArchitecture       : 64 ビット
WindowsVersion       : 2009
WindowsBuildLabEx    : 19041.1.amd64fre.vb_release.191206-1406
OsLanguage           : ja-JP
OsMuiLanguages       : {ja-JP}

PS C:\> $PSVersionTable
Name                           Value                                                                     
----                           -----                                                                     
PSVersion                      5.1.19041.1023                                                            
PSEdition                      Desktop                                                                   
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                   
BuildVersion                   10.0.19041.1023                                                           
CLRVersion                     4.0.30319.42000                                                           
WSManStackVersion              3.0                                                                       
PSRemotingProtocolVersion      2.3                                                                       
SerializationVersion           1.1.0.1  

Suggested solution

If you execute the Get-Item cmdlet without the -Force switch, that is not get the hidden files/folders. You can fix this issue by changing it to add the -Force parameter.

https://github.com/guitarrapc/GraniResource/blob/3ea0c8cc1074284dbd37991cd67bbbeacae1fce1/DSCResources/Grani_ACL/Grani_ACL.psm1#L92-L94