Modules/Folder.Common/Folder.Common.psm1
<# .SYNOPSIS Test if an attribute on a folder is present. .PARAMETER Folder The System.IO.DirectoryInfo object of the folder that should be checked for the attribute. .PARAMETER Attribute The name of the attribute from the enum System.IO.FileAttributes. #> function Test-FileAttribute { [CmdletBinding()] [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $true)] [System.IO.DirectoryInfo] $Folder, [Parameter(Mandatory = $true)] [System.IO.FileAttributes] $Attribute ) $attributeValue = $Folder.Attributes -band [System.IO.FileAttributes]::$Attribute switch ($attributeValue) { { $_ -gt 0 } { $isPresent = $true } default { $isPresent = $false } } return $isPresent } <# .SYNOPSIS Sets or removes an attribute on a folder. .PARAMETER Folder The System.IO.DirectoryInfo object of the folder that should have the attribute set or removed. .PARAMETER Attribute The name of the attribute from the enum System.IO.FileAttributes. .PARAMETER Enabled If the attribute should be enabled or disabled. #> function Set-FileAttribute { [CmdletBinding()] [OutputType([System.IO.DirectoryInfo])] param ( [Parameter(Mandatory = $true)] [System.IO.DirectoryInfo] $Folder, [Parameter(Mandatory = $true)] [System.IO.FileAttributes] $Attribute, [Parameter(Mandatory = $true)] [System.Boolean] $Enabled ) switch ($Enabled) { $true { $Folder.Attributes = [System.IO.FileAttributes]::$Attribute } $false { $Folder.Attributes -= [System.IO.FileAttributes]::$Attribute } } } Export-ModuleMember -Function Set-FileAttribute, Test-FileAttribute |