Modules/SChannelDsc.Common/SChannelDsc.Common.psm1
|
#Region '.\prefix.ps1' -1 $script:resourceHelperModulePath = Join-Path -Path $PSScriptRoot -ChildPath '..\..\Modules\DscResource.Common' Import-Module -Name $script:resourceHelperModulePath $script:localizedData = Get-LocalizedData -DefaultUICulture 'en-US' #EndRegion '.\prefix.ps1' 6 #Region '.\Public\Convert-SCDscArrayToString.ps1' -1 function Convert-SCDscArrayToString { param ( [Parameter()] [System.Array] $Array ) $str = "(" for ($i = 0; $i -lt $Array.Count; $i++) { $item = $Array[$i] if ($item -is [System.Collections.Hashtable]) { $str += "{" $str += Convert-SCDscHashtableToString -Hashtable $item $str += "}" } elseif ($Array[$i] -is [Microsoft.Management.Infrastructure.CimInstance]) { $str += Convert-SCDscCIMInstanceToString -CIMInstance $item } else { $str += $item } if ($i -lt ($Array.Count - 1)) { $str += "," } } $str += ")" return $str } #EndRegion '.\Public\Convert-SCDscArrayToString.ps1' 38 #Region '.\Public\Convert-SCDscCIMInstanceToString.ps1' -1 function Convert-SCDscCIMInstanceToString { param ( [Parameter()] [Microsoft.Management.Infrastructure.CimInstance] $CIMInstance ) $str = "{" foreach ($prop in $CIMInstance.CimInstanceProperties) { if ($str -notmatch "{$") { $str += "; " } $str += "$($prop.Name)=$($prop.Value)" } $str += "}" return $str } #EndRegion '.\Public\Convert-SCDscCIMInstanceToString.ps1' 23 #Region '.\Public\Convert-SCDscHashtableToString.ps1' -1 function Convert-SCDscHashtableToString { param ( [Parameter()] [System.Collections.Hashtable] $Hashtable ) $values = @() foreach ($pair in $Hashtable.GetEnumerator()) { if ($pair.Value -is [System.Array]) { $str = "$($pair.Key)=$(Convert-SCDscArrayToString -Array $pair.Value)" } elseif ($pair.Value -is [System.Collections.Hashtable]) { $str = "$($pair.Key)={$(Convert-SCDscHashtableToString -Hashtable $pair.Value)}" } elseif ($pair.Value -is [Microsoft.Management.Infrastructure.CimInstance]) { $str = "$($pair.Key)=$(Convert-SCDscCIMInstanceToString -CIMInstance $pair.Value)" } else { $str = "$($pair.Key)=$($pair.Value)" } $values += $str } [array]::Sort($values) return ($values -join "; ") } #EndRegion '.\Public\Convert-SCDscHashtableToString.ps1' 34 #Region '.\Public\Get-SCDscOSVersion.ps1' -1 function Get-SCDscOSVersion { [CmdletBinding()] param () return [System.Environment]::OSVersion.Version } #EndRegion '.\Public\Get-SCDscOSVersion.ps1' 7 #Region '.\Public\Get-SChannelItem.ps1' -1 function Get-SChannelItem { [CmdletBinding()] [OutputType([System.String])] param ( [Parameter(Mandatory = $true)] [System.String] $ItemKey, [Parameter()] [System.String] $ItemValue = 'Enabled' ) $value = Get-ItemProperty -Path $ItemKey -Name $ItemValue -ErrorAction SilentlyContinue if ($null -eq $value) { return 'Default' } $value = Get-ItemPropertyValue -Path $ItemKey -Name $ItemValue switch ($value) { $null { return 'Default' } 0 { return 'Disabled' } 1 { return 'Enabled' } } } #EndRegion '.\Public\Get-SChannelItem.ps1' 41 #Region '.\Public\Get-SChannelRegKeyValue.ps1' -1 function Get-SChannelRegKeyValue { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [System.String] $Key, [Parameter(Mandatory = $true)] [System.String] $Name ) $value = Get-ItemProperty -Path $Key -Name $Name -ErrorAction SilentlyContinue if ($null -eq $value) { return $null } $value = Get-ItemPropertyValue -Path $Key -Name $Name return $value } #EndRegion '.\Public\Get-SChannelRegKeyValue.ps1' 26 #Region '.\Public\Set-SChannelItem.ps1' -1 function Set-SChannelItem { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [System.String] $ItemKey, [Parameter(Mandatory = $true)] [System.String] $ItemSubKey, [Parameter()] [System.String] $ItemValue = 'Enabled', [Parameter(Mandatory = $true)] [ValidateSet('Enabled', 'Disabled', 'Default')] [System.String] $State ) $fullSubKey = $ItemKey + '\' + $ItemSubKey if ($ItemKey -match "(.*:).*") { $root = $Matches[1] } $path = ($ItemKey -replace $root, "").TrimStart('\') $regKey = (Get-Item -Path $root).OpenSubKey($path, $true) switch ($State) { 'Default' { if (Test-Path -Path $fullSubKey) { if ($ItemSubKey -match '\\') { $fullSubKey = $ItemKey + '\' + ($ItemSubkey -split '\\')[0] } $null = Remove-Item -Path $fullSubKey -Force -Recurse } } 'Disabled' { if ((Test-Path -Path $fullSubKey) -eq $false) { $regKey = $regKey.CreateSubKey($ItemSubKey) } else { $regKey = $regKey.OpenSubKey($ItemSubKey, $true) } if ($ItemValue -eq 'DisabledByDefault') { $null = $regKey.SetValue($ItemValue, 1, [Microsoft.Win32.RegistryValueKind]::DWORD) } else { $null = $regKey.SetValue($ItemValue, 0, [Microsoft.Win32.RegistryValueKind]::DWORD) } } 'Enabled' { if ((Test-Path -Path $fullSubKey) -eq $false) { $regKey = $regKey.CreateSubKey($ItemSubKey) } else { $regKey = $regKey.OpenSubKey($ItemSubKey, $true) } if ($ItemValue -eq 'DisabledByDefault') { $null = $regKey.SetValue($ItemValue, 0, [Microsoft.Win32.RegistryValueKind]::DWORD) } else { $null = $regKey.SetValue($ItemValue, 1, [Microsoft.Win32.RegistryValueKind]::DWORD) } } } } #EndRegion '.\Public\Set-SChannelItem.ps1' 90 #Region '.\Public\Set-SChannelRegKeyValue.ps1' -1 function Set-SChannelRegKeyValue { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [System.String] $Key, [Parameter(Mandatory = $true)] [System.String] $SubKey, [Parameter()] [System.String] $Name, [Parameter()] [System.Int32] $Value, [Parameter()] [Switch] $Remove, [Parameter()] [Switch] $Force ) $fullSubKey = $Key + '\' + $SubKey if ($Remove) { if ($PSBoundParameters.ContainsKey("Name")) { $null = Remove-ItemProperty -Path $fullSubKey -Name $Name -ErrorAction SilentlyContinue } # Remove registry key if (Test-Path -Path $fullSubKey) { $item = Get-Item -Path $fullSubKey if (($item.ValueCount -eq 0 -and ` $item.SubKeyCount -eq 0) -or $Force) { if ($SubKey -match '\\') { $fullSubKey = $Key + '\' + ($Subkey -split '\\')[0] } $null = Remove-Item -Path $fullSubKey -Force -Recurse } } } else { # Update registry key if ($Key -match "(.*:).*") { $root = $Matches[1] } $path = ($Key -replace $root, "").TrimStart('\') $currentKey = Get-Item -Path $fullSubKey -ErrorAction SilentlyContinue if ($null -eq $currentKey) { $currentKey = New-Item -Path $fullSubKey -Force } $null = Set-ItemProperty -Path $fullSubKey -Name $Name -Value $Value -Type 'Dword' -Force } } #EndRegion '.\Public\Set-SChannelRegKeyValue.ps1' 75 #Region '.\Public\Test-SCDscObjectHasProperty.ps1' -1 function Test-SCDscObjectHasProperty { [CmdletBinding()] [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $true, Position = 1)] [Object] $Object, [Parameter(Mandatory = $true, Position = 2)] [String] $PropertyName ) if (([bool]($Object.PSobject.Properties.Name -contains $PropertyName)) -eq $true) { if ($null -ne $Object.$PropertyName) { return $true } } return $false } #EndRegion '.\Public\Test-SCDscObjectHasProperty.ps1' 26 |