From b2c68b18f5fe8df13725de76fa4f3db3bf094ceb Mon Sep 17 00:00:00 2001 From: Ronald Rink Date: Thu, 29 Oct 2015 05:50:28 +0100 Subject: [PATCH 1/2] Installer * fix installation script (adapted from chocolateyInstall.ps1) --- install.ps1 | 202 ++++++++++++++++++++++++++-------------------------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/install.ps1 b/install.ps1 index de15b6b..fcb8bb5 100644 --- a/install.ps1 +++ b/install.ps1 @@ -1,65 +1,87 @@ +<# +.SYNOPSIS +Installs the module into a path inside $ENV:PSModulePath. + + +.DESCRIPTION +Installs the module into a path inside $ENV:PSModulePath. +Any existing module customisations are overwritten by the +installation routine (such as .xml). + +.EXAMPLE +Installs the module into the default directory. + +PS > .\Install.ps1 + +.EXAMPLE +Installs the module into the C:\PSModules directory. + +PS > .\Install.ps1 -ModulePath C:\PSModules +#> [CmdletBinding()] PARAM ( - [string] $ModuleName = ([regex]::Match((Get-Item $PSScriptRoot).Name, '^(.+)\.\d\.\d\.\d$')).Groups[1].Value + # Specifies the module name. Leave as is. + [string] $ModuleName = 'biz.dfch.PS.System.Utilities' + , + # Specifies the target base directory into which to install the module. + [string] $ModulePath = (Join-Path $env:ProgramFiles WindowsPowerShell\Modules) ) -END +end { - if([String]::IsNullOrWhiteSpace($ModuleName)) - { - $ex = New-Object System.ArgumentNullException('ModuleName', 'ModuleName: Parameter validation FAILED. Parameter must not be null or empty. Please choose a module name.'); - throw $ex; - } - $modulePath = Join-Path -Path $env:ProgramFiles -ChildPath "WindowsPowerShell\Modules"; - $targetDirectory = Join-Path -Path $modulePath -ChildPath $ModuleName; + $targetDirectory = Join-Path $ModulePath $ModuleName + $scriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent + $sourceDirectory = Join-Path $scriptRoot Tools - $scriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent; - $sourceDirectory = Join-Path -Path $scriptRoot -ChildPath Tools; + if ($PSVersionTable.PSVersion.Major -ge 5) + { + $manifestFile = Join-Path $sourceDirectory ('{0}.psd1' -f $ModuleName) + $manifest = Test-ModuleManifest -Path $manifestFile -WarningAction Ignore -ErrorAction Stop + $targetDirectory = Join-Path $targetDirectory $manifest.Version.ToString() + } - Write-Verbose ("Creating/updating module '{0}' in '{1}' ..." -f $ModuleName, $targetDirectory); - Update-Directory -Source $sourceDirectory -Destination $targetDirectory; + Update-Directory -Source $sourceDirectory -Destination $targetDirectory if ($PSVersionTable.PSVersion.Major -lt 4) { - $modulePaths = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine') -split ';' - if ($modulePaths -notcontains $modulePath) + $ModulePaths = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine') -split ';' + if ($ModulePaths -notcontains $ModulePath) { - Write-Verbose "Adding '$modulePath' to PSModulePath." + Write-Verbose "Adding '$ModulePath' to PSModulePath." - $modulePaths = @( - $modulePath - $modulePaths + $ModulePaths = @( + $ModulePath + $ModulePaths ) - $newModulePath = $modulePaths -join ';' + $newModulePath = $ModulePaths -join ';' - [Environment]::SetEnvironmentVariable('PSModulePath', $newModulePath, 'Machine'); - $env:PSModulePath += ";$modulePath"; + [Environment]::SetEnvironmentVariable('PSModulePath', $newModulePath, 'Machine') + $env:PSModulePath += ";$ModulePath" } } } -BEGIN +begin { function Update-Directory { [CmdletBinding()] - PARAM - ( + param ( [Parameter(Mandatory = $true)] - [string] $Source - , + [string] $Source, + [Parameter(Mandatory = $true)] [string] $Destination ) - $Source = $PSCmdlet.GetUnresolvedProviderPathFromPSPath($Source); - $Destination = $PSCmdlet.GetUnresolvedProviderPathFromPSPath($Destination); + $Source = $PSCmdlet.GetUnresolvedProviderPathFromPSPath($Source) + $Destination = $PSCmdlet.GetUnresolvedProviderPathFromPSPath($Destination) - if (!(Test-Path -LiteralPath $Destination)) + if (-not (Test-Path -LiteralPath $Destination)) { - $null = New-Item -Path $Destination -ItemType Directory -ErrorAction Stop; + $null = New-Item -Path $Destination -ItemType Directory -ErrorAction Stop } try @@ -69,49 +91,51 @@ BEGIN if ($sourceItem -isnot [System.IO.DirectoryInfo] -or $destItem -isnot [System.IO.DirectoryInfo]) { - throw ("ERROR: '{0}' and '{1}' are not of type [DirectoryInfo]." -f ($sourceItem | Out-String), ($destItem | Out-String)); + throw 'Not Directory Info' } } catch { - throw 'ERROR: Both Source and Destination must be directory paths.'; + throw 'Both Source and Destination must be directory paths.' } - $sourceFiles = Get-ChildItem -Path $Source -Recurse | Where-Object { -not $_.PSIsContainer }; + $sourceFiles = Get-ChildItem -Path $Source -Recurse | + Where-Object { -not $_.PSIsContainer } foreach ($sourceFile in $sourceFiles) { - $relativePath = Get-RelativePath $sourceFile.FullName -RelativeTo $Source; - $targetPath = Join-Path -Path $Destination -ChildPath $relativePath; + $relativePath = Get-RelativePath $sourceFile.FullName -RelativeTo $Source + $targetPath = Join-Path $Destination $relativePath - $sourceHash = Get-FileHash -Path $sourceFile.FullName; - $destHash = Get-FileHash -Path $targetPath; + $sourceHash = Get-FileHash -Path $sourceFile.FullName + $destHash = Get-FileHash -Path $targetPath if ($sourceHash -ne $destHash) { - $targetParent = Split-Path $targetPath -Parent; + $targetParent = Split-Path $targetPath -Parent if (-not (Test-Path -Path $targetParent -PathType Container)) { - $null = New-Item -Path $targetParent -ItemType Directory -ErrorAction Stop; + $null = New-Item -Path $targetParent -ItemType Directory -ErrorAction Stop } - Write-Verbose "Updating file $relativePath to new version."; - Copy-Item $sourceFile.FullName -Destination $targetPath -Force -ErrorAction Stop; + Write-Verbose "Updating file $relativePath to new version." + Copy-Item $sourceFile.FullName -Destination $targetPath -Force -ErrorAction Stop } } - $targetFiles = Get-ChildItem -Path $Destination -Recurse | Where-Object { -not $_.PSIsContainer }; - + $targetFiles = Get-ChildItem -Path $Destination -Recurse | + Where-Object { -not $_.PSIsContainer } + foreach ($targetFile in $targetFiles) { - $relativePath = Get-RelativePath $targetFile.FullName -RelativeTo $Destination; - $sourcePath = Join-Path -Path $Source -ChildPath $relativePath; + $relativePath = Get-RelativePath $targetFile.FullName -RelativeTo $Destination + $sourcePath = Join-Path $Source $relativePath if (-not (Test-Path $sourcePath -PathType Leaf)) { - Write-Verbose "Removing unknown file $relativePath from module folder."; - Remove-Item -LiteralPath $targetFile.FullName -Force -ErrorAction Stop; + Write-Verbose "Removing unknown file $relativePath from module folder." + Remove-Item -LiteralPath $targetFile.FullName -Force -ErrorAction Stop } } @@ -119,71 +143,47 @@ BEGIN function Get-RelativePath { - PARAM - ( - [string] $Path - , - [string] $RelativeTo - ) + param ( [string] $Path, [string] $RelativeTo ) return $Path -replace "^$([regex]::Escape($RelativeTo))\\?" } function Get-FileHash { - PARAM - ( - [string] $Path - ) + param ([string] $Path) if (-not (Test-Path -LiteralPath $Path -PathType Leaf)) { - return $null; + return $null } - $item = Get-Item -LiteralPath $Path; + $item = Get-Item -LiteralPath $Path if ($item -isnot [System.IO.FileSystemInfo]) { - return $null; + return $null } - $stream = $null; + $stream = $null try { - $sha = New-Object System.Security.Cryptography.SHA256CryptoServiceProvider; - $stream = $item.OpenRead(); - $bytes = $sha.ComputeHash($stream); - return [convert]::ToBase64String($bytes); + $sha = New-Object System.Security.Cryptography.SHA256CryptoServiceProvider + $stream = $item.OpenRead() + $bytes = $sha.ComputeHash($stream) + return [convert]::ToBase64String($bytes) } finally { - if ($null -ne $stream) { $stream.Close() }; - if ($null -ne $sha) { $sha.Clear() }; + if ($null -ne $stream) { $stream.Close() } + if ($null -ne $sha) { $sha.Clear() } } } } -# -# Copyright 2014-2015 d-fens GmbH -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - # SIG # Begin signature block # MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUcLrDiahVJjgo467/FIpVopuB -# CtegghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUNI1DIfXPTyN0kb2A39fif2Gq +# 5RWgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw # VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV # BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 # MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK @@ -282,26 +282,26 @@ BEGIN # MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH # MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM # MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB -# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBT8rm/qCXlDeO38 -# gsmpBZQMoi/R1DANBgkqhkiG9w0BAQEFAASCAQAqxzoX5CT0R039KHNaPgZGYF2l -# O95oF3Y2tzg1yT1oD/xdCPEyiY5Mdk9nKC9gp84wzo7OqjNQ4pvxWeId4OYcrzxP -# j45pWRqpxHS8atpG3OlV2VdnyyiaAmOkNBpfgVtGDulxSFpmRdOiVkTk1AncJKdg -# dWFBtDKaOUc3d78KaqOpRQJTCzgL5nvVZ3LWiHwTuBdAK8tJstqfA7m03tnfBJdh -# K15dPgVo/OYPB24b9AqE1UXbn7rpCXW4Pq2ZBHWYaEAZcMIujG7mTK4CM0+q4yVQ -# Y9qLlGcqCbB+vYrvCYYrFdJ6mq90djuh64U+GvA0uTBaijAPQh3zsbVPNfhloYIC +# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSf9Hjjh0Q4Dwid +# fky1wbVTmpKZxTANBgkqhkiG9w0BAQEFAASCAQDFe8NPqqjRZPcBcdoYtAqiNbJ2 +# xB0tkzBtTABDIkeUIXYJ5Vxs3busRdXw22/3flx/U5jBz9gC3GrHUt9SmkSGdZi6 +# GlqbOMG2C2ChQq2z+WS8GI0tMDc5Yr/wveJQ0PViNO5MAyS2D5jUC3WtnZrj2R6m +# iARKpVMbpNg4Ykfrxl6t9Yv00Cv1oUPbh7PTvjzVMmr/nPQLY5Z2jCE2RHLPG3Bp +# d+/emXgyupeq1raK/xQ5JTarbEXOq5+tR3GePpmdj/Z/RC+7JqyfSEjC/BN9ZYAD +# MzNDq845tkoeOgihILB6y8WpAUNrSZG+1LFJ1WML3DBiOUmm2C8+5vkUe7aKoYIC # ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX # BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt # ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA # oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1 -# MTAxODExMDMwNVowIwYJKoZIhvcNAQkEMRYEFEHIruJsd+Vs7sOYHwPOtOXfmUEp +# MTAyOTA0MzQyNlowIwYJKoZIhvcNAQkEMRYEFIhZV6t5gk/F1/ymgTEly9Pi4Uro # MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es # KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt # c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh -# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQCneT9IkXgn3BU0nAQ2 -# Qye78E17/Bm/O9Drb24yKz0yLH6Os21ZWKi8C6viepvY43ZOz30wCA6ffrhksIvt -# tojSZTNiSm5G+GFKmhdqmV+24AGSdRNIsi4j4D0KnHV9zFTGa6fDrl7/ugPN2odv -# 9on/rI6nnJdPYK4snc68iV79K1kal4zyEE42g8othiLRq/R/RwQ7o6xYDQLVu1Zd -# dIZatpxWQy3VgEuS2mMh/QH2De/FghJh2C/ZKfdVytbFoA+igQ9gRMHiNVOvwVwa -# +x4A1Q3TfThFhnyIbGSSRQKy5m9zrfe7Snv4LJeqCQllcKz61JKoXFXj9Cbnn8Tl -# 0NZq +# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQAwvmYr/VZ2y8ll+YM9 +# dp/LDaAQVDp4+mTICW+lqRosQteSS43YXMzAXBn7vDxgMG6V14pI2ECE2gvlWRDg +# kDeHzsl6HbIzHlHoOsJvuWu3aUuoAXdwu9u4tUQRsHbMEdu38/7EovmOdwgXY/R/ +# LVGtjsD85V+TGuiRmRM/eWNiCQPoEk222cRRk2gUYy/jqqadu8XCuFAJauh0jHL/ +# hoO8LV+7IdhjUjlfrB0exQtqxfd7eu6ul41T/IbxjPjb/TFdp2rOpP24d5+hIase +# uM5SR8NXthTLg4jIDiy7D4cQRMtNcXwvToixv7EpAhamAGv+bs1/EyLCUj7Nrga/ +# 8c8R # SIG # End signature block From f97491f6ed5741e454ee1e90497c50127a088753 Mon Sep 17 00:00:00 2001 From: Ronald Rink Date: Thu, 29 Oct 2015 06:07:42 +0100 Subject: [PATCH 2/2] Prepare Release * move files to src sub folder * update version * fixed installer * updated release notes --- .../Assert-CmdletDocumentation.ps1 | 0 .../ConvertFrom-Base64.Tests.ps1 | 0 .../ConvertFrom-Base64.ps1 | 0 .../ConvertFrom-CmdletHelp.ps1 | 0 .../ConvertFrom-Hashtable.ps1 | 0 .../ConvertFrom-PSCustomObject.ps1 | 0 .../ConvertFrom-SecureStringDF.ps1 | 0 .../ConvertFrom-UnicodeHexEncoding.ps1 | 0 .../ConvertFrom-UrlEncoded.ps1 | 0 .../ConvertTo-Base64.Tests.ps1 | 0 .../ConvertTo-Base64.ps1 | 0 .../ConvertTo-UrlEncoded.Tests.ps1 | 0 .../ConvertTo-UrlEncoded.ps1 | 0 .../Expand-CompressedItem.ps1 | 0 .../Export-Credential.ps1 | 0 .../Format-IpAddress.ps1 | 0 Format-Xml.ps1 => src/Format-Xml.ps1 | 0 .../Get-ComObjectType.ps1 | 0 .../Get-Constructor.ps1 | 0 .../Get-Priority.Tests.ps1 | 0 Get-Priority.ps1 => src/Get-Priority.ps1 | 0 .../Import-Credential.ps1 | 0 Import-Module.ps1 => src/Import-Module.ps1 | 0 .../Merge-Hashtable.Tests.ps1 | 0 .../Merge-Hashtable.ps1 | 0 .../New-ActivityProgress.ps1 | 0 .../New-CustomErrorRecord.ps1 | 0 .../New-SecurePassword.ps1 | 0 .../Remove-ActivityProgress.ps1 | 0 .../Send-ShortMessage.Tests.ps1 | 0 .../Send-ShortMessage.ps1 | 0 .../Set-ActivityProgress.ps1 | 0 .../Set-SslSecurityPolicy.ps1 | 0 .../Test-CmdletDocumentation.ps1 | 0 .../Test-StringPattern.ps1 | 0 .../Update-Signature.Tests.ps1 | 0 .../Update-Signature.ps1 | 55 +- .../biz.dfch.PS.System.Utilities.nuspec | 19 +- .../biz.dfch.PS.System.Utilities.psd1 | 622 +++++++++--------- .../biz.dfch.PS.System.Utilities.psm1 | 0 .../biz.dfch.PS.System.Utilities.xml | Bin install.ps1 => src/install.ps1 | 35 +- 42 files changed, 368 insertions(+), 363 deletions(-) rename Assert-CmdletDocumentation.ps1 => src/Assert-CmdletDocumentation.ps1 (100%) rename ConvertFrom-Base64.Tests.ps1 => src/ConvertFrom-Base64.Tests.ps1 (100%) rename ConvertFrom-Base64.ps1 => src/ConvertFrom-Base64.ps1 (100%) rename ConvertFrom-CmdletHelp.ps1 => src/ConvertFrom-CmdletHelp.ps1 (100%) rename ConvertFrom-Hashtable.ps1 => src/ConvertFrom-Hashtable.ps1 (100%) rename ConvertFrom-PSCustomObject.ps1 => src/ConvertFrom-PSCustomObject.ps1 (100%) rename ConvertFrom-SecureStringDF.ps1 => src/ConvertFrom-SecureStringDF.ps1 (100%) rename ConvertFrom-UnicodeHexEncoding.ps1 => src/ConvertFrom-UnicodeHexEncoding.ps1 (100%) rename ConvertFrom-UrlEncoded.ps1 => src/ConvertFrom-UrlEncoded.ps1 (100%) rename ConvertTo-Base64.Tests.ps1 => src/ConvertTo-Base64.Tests.ps1 (100%) rename ConvertTo-Base64.ps1 => src/ConvertTo-Base64.ps1 (100%) rename ConvertTo-UrlEncoded.Tests.ps1 => src/ConvertTo-UrlEncoded.Tests.ps1 (100%) rename ConvertTo-UrlEncoded.ps1 => src/ConvertTo-UrlEncoded.ps1 (100%) rename Expand-CompressedItem.ps1 => src/Expand-CompressedItem.ps1 (100%) rename Export-Credential.ps1 => src/Export-Credential.ps1 (100%) rename Format-IpAddress.ps1 => src/Format-IpAddress.ps1 (100%) rename Format-Xml.ps1 => src/Format-Xml.ps1 (100%) rename Get-ComObjectType.ps1 => src/Get-ComObjectType.ps1 (100%) rename Get-Constructor.ps1 => src/Get-Constructor.ps1 (100%) rename Get-Priority.Tests.ps1 => src/Get-Priority.Tests.ps1 (100%) rename Get-Priority.ps1 => src/Get-Priority.ps1 (100%) rename Import-Credential.ps1 => src/Import-Credential.ps1 (100%) rename Import-Module.ps1 => src/Import-Module.ps1 (100%) rename Merge-Hashtable.Tests.ps1 => src/Merge-Hashtable.Tests.ps1 (100%) rename Merge-Hashtable.ps1 => src/Merge-Hashtable.ps1 (100%) rename New-ActivityProgress.ps1 => src/New-ActivityProgress.ps1 (100%) rename New-CustomErrorRecord.ps1 => src/New-CustomErrorRecord.ps1 (100%) rename New-SecurePassword.ps1 => src/New-SecurePassword.ps1 (100%) rename Remove-ActivityProgress.ps1 => src/Remove-ActivityProgress.ps1 (100%) rename Send-ShortMessage.Tests.ps1 => src/Send-ShortMessage.Tests.ps1 (100%) rename Send-ShortMessage.ps1 => src/Send-ShortMessage.ps1 (100%) rename Set-ActivityProgress.ps1 => src/Set-ActivityProgress.ps1 (100%) rename Set-SslSecurityPolicy.ps1 => src/Set-SslSecurityPolicy.ps1 (100%) rename Test-CmdletDocumentation.ps1 => src/Test-CmdletDocumentation.ps1 (100%) rename Test-StringPattern.ps1 => src/Test-StringPattern.ps1 (100%) rename Update-Signature.Tests.ps1 => src/Update-Signature.Tests.ps1 (100%) rename Update-Signature.ps1 => src/Update-Signature.ps1 (86%) rename biz.dfch.PS.System.Utilities.nuspec => src/biz.dfch.PS.System.Utilities.nuspec (89%) rename biz.dfch.PS.System.Utilities.psd1 => src/biz.dfch.PS.System.Utilities.psd1 (89%) rename biz.dfch.PS.System.Utilities.psm1 => src/biz.dfch.PS.System.Utilities.psm1 (100%) rename biz.dfch.PS.System.Utilities.xml => src/biz.dfch.PS.System.Utilities.xml (100%) rename install.ps1 => src/install.ps1 (92%) diff --git a/Assert-CmdletDocumentation.ps1 b/src/Assert-CmdletDocumentation.ps1 similarity index 100% rename from Assert-CmdletDocumentation.ps1 rename to src/Assert-CmdletDocumentation.ps1 diff --git a/ConvertFrom-Base64.Tests.ps1 b/src/ConvertFrom-Base64.Tests.ps1 similarity index 100% rename from ConvertFrom-Base64.Tests.ps1 rename to src/ConvertFrom-Base64.Tests.ps1 diff --git a/ConvertFrom-Base64.ps1 b/src/ConvertFrom-Base64.ps1 similarity index 100% rename from ConvertFrom-Base64.ps1 rename to src/ConvertFrom-Base64.ps1 diff --git a/ConvertFrom-CmdletHelp.ps1 b/src/ConvertFrom-CmdletHelp.ps1 similarity index 100% rename from ConvertFrom-CmdletHelp.ps1 rename to src/ConvertFrom-CmdletHelp.ps1 diff --git a/ConvertFrom-Hashtable.ps1 b/src/ConvertFrom-Hashtable.ps1 similarity index 100% rename from ConvertFrom-Hashtable.ps1 rename to src/ConvertFrom-Hashtable.ps1 diff --git a/ConvertFrom-PSCustomObject.ps1 b/src/ConvertFrom-PSCustomObject.ps1 similarity index 100% rename from ConvertFrom-PSCustomObject.ps1 rename to src/ConvertFrom-PSCustomObject.ps1 diff --git a/ConvertFrom-SecureStringDF.ps1 b/src/ConvertFrom-SecureStringDF.ps1 similarity index 100% rename from ConvertFrom-SecureStringDF.ps1 rename to src/ConvertFrom-SecureStringDF.ps1 diff --git a/ConvertFrom-UnicodeHexEncoding.ps1 b/src/ConvertFrom-UnicodeHexEncoding.ps1 similarity index 100% rename from ConvertFrom-UnicodeHexEncoding.ps1 rename to src/ConvertFrom-UnicodeHexEncoding.ps1 diff --git a/ConvertFrom-UrlEncoded.ps1 b/src/ConvertFrom-UrlEncoded.ps1 similarity index 100% rename from ConvertFrom-UrlEncoded.ps1 rename to src/ConvertFrom-UrlEncoded.ps1 diff --git a/ConvertTo-Base64.Tests.ps1 b/src/ConvertTo-Base64.Tests.ps1 similarity index 100% rename from ConvertTo-Base64.Tests.ps1 rename to src/ConvertTo-Base64.Tests.ps1 diff --git a/ConvertTo-Base64.ps1 b/src/ConvertTo-Base64.ps1 similarity index 100% rename from ConvertTo-Base64.ps1 rename to src/ConvertTo-Base64.ps1 diff --git a/ConvertTo-UrlEncoded.Tests.ps1 b/src/ConvertTo-UrlEncoded.Tests.ps1 similarity index 100% rename from ConvertTo-UrlEncoded.Tests.ps1 rename to src/ConvertTo-UrlEncoded.Tests.ps1 diff --git a/ConvertTo-UrlEncoded.ps1 b/src/ConvertTo-UrlEncoded.ps1 similarity index 100% rename from ConvertTo-UrlEncoded.ps1 rename to src/ConvertTo-UrlEncoded.ps1 diff --git a/Expand-CompressedItem.ps1 b/src/Expand-CompressedItem.ps1 similarity index 100% rename from Expand-CompressedItem.ps1 rename to src/Expand-CompressedItem.ps1 diff --git a/Export-Credential.ps1 b/src/Export-Credential.ps1 similarity index 100% rename from Export-Credential.ps1 rename to src/Export-Credential.ps1 diff --git a/Format-IpAddress.ps1 b/src/Format-IpAddress.ps1 similarity index 100% rename from Format-IpAddress.ps1 rename to src/Format-IpAddress.ps1 diff --git a/Format-Xml.ps1 b/src/Format-Xml.ps1 similarity index 100% rename from Format-Xml.ps1 rename to src/Format-Xml.ps1 diff --git a/Get-ComObjectType.ps1 b/src/Get-ComObjectType.ps1 similarity index 100% rename from Get-ComObjectType.ps1 rename to src/Get-ComObjectType.ps1 diff --git a/Get-Constructor.ps1 b/src/Get-Constructor.ps1 similarity index 100% rename from Get-Constructor.ps1 rename to src/Get-Constructor.ps1 diff --git a/Get-Priority.Tests.ps1 b/src/Get-Priority.Tests.ps1 similarity index 100% rename from Get-Priority.Tests.ps1 rename to src/Get-Priority.Tests.ps1 diff --git a/Get-Priority.ps1 b/src/Get-Priority.ps1 similarity index 100% rename from Get-Priority.ps1 rename to src/Get-Priority.ps1 diff --git a/Import-Credential.ps1 b/src/Import-Credential.ps1 similarity index 100% rename from Import-Credential.ps1 rename to src/Import-Credential.ps1 diff --git a/Import-Module.ps1 b/src/Import-Module.ps1 similarity index 100% rename from Import-Module.ps1 rename to src/Import-Module.ps1 diff --git a/Merge-Hashtable.Tests.ps1 b/src/Merge-Hashtable.Tests.ps1 similarity index 100% rename from Merge-Hashtable.Tests.ps1 rename to src/Merge-Hashtable.Tests.ps1 diff --git a/Merge-Hashtable.ps1 b/src/Merge-Hashtable.ps1 similarity index 100% rename from Merge-Hashtable.ps1 rename to src/Merge-Hashtable.ps1 diff --git a/New-ActivityProgress.ps1 b/src/New-ActivityProgress.ps1 similarity index 100% rename from New-ActivityProgress.ps1 rename to src/New-ActivityProgress.ps1 diff --git a/New-CustomErrorRecord.ps1 b/src/New-CustomErrorRecord.ps1 similarity index 100% rename from New-CustomErrorRecord.ps1 rename to src/New-CustomErrorRecord.ps1 diff --git a/New-SecurePassword.ps1 b/src/New-SecurePassword.ps1 similarity index 100% rename from New-SecurePassword.ps1 rename to src/New-SecurePassword.ps1 diff --git a/Remove-ActivityProgress.ps1 b/src/Remove-ActivityProgress.ps1 similarity index 100% rename from Remove-ActivityProgress.ps1 rename to src/Remove-ActivityProgress.ps1 diff --git a/Send-ShortMessage.Tests.ps1 b/src/Send-ShortMessage.Tests.ps1 similarity index 100% rename from Send-ShortMessage.Tests.ps1 rename to src/Send-ShortMessage.Tests.ps1 diff --git a/Send-ShortMessage.ps1 b/src/Send-ShortMessage.ps1 similarity index 100% rename from Send-ShortMessage.ps1 rename to src/Send-ShortMessage.ps1 diff --git a/Set-ActivityProgress.ps1 b/src/Set-ActivityProgress.ps1 similarity index 100% rename from Set-ActivityProgress.ps1 rename to src/Set-ActivityProgress.ps1 diff --git a/Set-SslSecurityPolicy.ps1 b/src/Set-SslSecurityPolicy.ps1 similarity index 100% rename from Set-SslSecurityPolicy.ps1 rename to src/Set-SslSecurityPolicy.ps1 diff --git a/Test-CmdletDocumentation.ps1 b/src/Test-CmdletDocumentation.ps1 similarity index 100% rename from Test-CmdletDocumentation.ps1 rename to src/Test-CmdletDocumentation.ps1 diff --git a/Test-StringPattern.ps1 b/src/Test-StringPattern.ps1 similarity index 100% rename from Test-StringPattern.ps1 rename to src/Test-StringPattern.ps1 diff --git a/Update-Signature.Tests.ps1 b/src/Update-Signature.Tests.ps1 similarity index 100% rename from Update-Signature.Tests.ps1 rename to src/Update-Signature.Tests.ps1 diff --git a/Update-Signature.ps1 b/src/Update-Signature.ps1 similarity index 86% rename from Update-Signature.ps1 rename to src/Update-Signature.ps1 index 43067b7..d2e22d6 100644 --- a/Update-Signature.ps1 +++ b/src/Update-Signature.ps1 @@ -66,6 +66,11 @@ PARAM # File extensions of the script files to sign [Parameter(Mandatory = $false)] $IncludeExtensions = @('*.ps1','*.psm1','*.psd1','*.dll','*.exe') + , + # Specifies whether to force an update of the signature + # even if the existing signature is still valid. + [Parameter(Mandatory = $false)] + [switch] $Force = $false ) if($PSCmdlet.ParameterSetName -eq 'path') @@ -83,13 +88,17 @@ foreach($Object in $InputObject) { continue; } - if($CounterSign) - { - Set-AuthenticodeSignature $Object -Certificate $cert -TimestampServer $TimestampServer -Confirm:$false; - } - else + $IsValid = (Get-AuthenticodeSignature $Object | Select Status).Status -eq 'Valid'; + if(!$IsValid -Or $Force) { - Set-AuthenticodeSignature $Object -Certificate $cert -Confirm:$false; + if($CounterSign) + { + Set-AuthenticodeSignature $Object -Certificate $cert -TimestampServer $TimestampServer -Confirm:$false; + } + else + { + Set-AuthenticodeSignature $Object -Certificate $cert -Confirm:$false; + } } } @@ -116,8 +125,8 @@ if($MyInvocation.ScriptName) { Export-ModuleMember -Function Update-Signature; } # SIG # Begin signature block # MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUnReLkphf8jjgJwDQHjD5iOOK -# Q7mgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU7c4D/BlD5jB+qCNtbycM6qSU +# F+agghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw # VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV # BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 # MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK @@ -216,26 +225,26 @@ if($MyInvocation.ScriptName) { Export-ModuleMember -Function Update-Signature; } # MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH # MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM # MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB -# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBRlvIbCKh6iB/yV -# 598qjEpwUQGhJDANBgkqhkiG9w0BAQEFAASCAQB7bU76OrueIaC2y47BhbVopmlx -# 2XuGKmRcac5viI3EkLpCQ2tKPpblsFOeT28PSwpcjhKaxJuHPLBxOqz9kT0q8WS+ -# nOa00LtH6+IvhpsDNUoXdZUvOvx2cCj02g2T8a00ozX0d9D7M9Fam3SSwEZ0ig80 -# bra1OxLaMXxAk/InRHpj6/SkN5o9ueWFKhAEH1cGcJn6bskzfL5osjJxRkBjhZ3m -# subyP83tdK3swn+2TiJWdgdFWaBu82ZxcRiIsi8CDtdnx1X987yHK/GWhpEnkoeO -# W3FFnHN4ZTMRN8+5n03e7EAYme3IOn2p73SXQclGQOWDnDMWMyanjuPeQT3HoYIC +# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBT9NxDLySVRdPrt +# CiBi/NEw0lIfRzANBgkqhkiG9w0BAQEFAASCAQBIooSPJVqyiriK60xRzW3FwHFo +# XR8dVnmErKVLR5/7AfyqXeOsgveXAPGLukprvDxPcsGAxfRNUJT+G9YPo0jTAMpL +# 3nnMkhKUNOSYaj7LPAnL2hCY3LcRfY+GToS9TCvwhaWVkgb1+/Z717+ePbP3BR0I +# xW5VDSLlB+OzVjt+PLn6mvg7e2YcEJO6nqzljATT1RX85p2Xju5GjmghdEBHZ0Gx +# U4P3K76d/kFBgGAz5acHXrSoRlveG9bx8ieuF7fqhF02lhT3FR7PAMYcgl2pnAzC +# T2lXQpAP8/DfN2eOXhkL8ocAXiwbGOhP+QYQav+sxtrCh3G5sAflvUto3lpkoYIC # ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX # BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt # ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA # oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1 -# MTAxODExMDMyMlowIwYJKoZIhvcNAQkEMRYEFHg8FRoAMa6FGyy3le36Je+KbQPP +# MTAyOTA0NTgwNFowIwYJKoZIhvcNAQkEMRYEFOjcHZgXjSBz7fIWF1kgQbcbqm/8 # MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es # KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt # c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh -# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQBxp6TWwhrRpAmAWtnz -# slFbDClmf8EokpZ8wXK/vUGinyT4DYJnWZZvFfqF+r5T/UyKP/ntPBiK4Oyy4fDT -# HLzmTj0pvcDBK9tXRjMiIdHf9YyG/7OA+N2j8gRc5GSKwE1dFa0Tx50CFvof0lrz -# hf3XGFLQrLwmJlFLpzLhhwoIdaVqeo7qDOkcw2s+sl2rgiPFgzQE85fqoeehZcSv -# DUqe9/zSvTDYq+rJHo/VjR8f4iZ6dB6fdJZs/GjeFWK5g1wTnbABTfdWDqOQr/bn -# lpFWRhYj/DrRyEHmRgu7VXKPmRoxU0zlet5FvphfEaoZVBmhIp7rYktUy1B9q652 -# 16Nt +# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQBRBfY8ej83KiBByUFp +# fgbvHTdWRMxFNiNv4kREWoo/56TxaHEDLhe73PRDDKJzFykaidqK4hVDGnGPjDXb +# 2l9lOtreYhZgA0iw1OZ8Ny/L0bUns5vw8vtUr0hyhSD14elGvpGLicxkJ5PUbHhs +# 87t+hh4j1zASLWU4d9BOStTfw6CK31+WiH93NrT0+GgaYVfVMxR+9lV3KGLts6IT +# WTKXiIXcyYRuMFO+Aq7uGbBGCT/kTSfCUI7UCgoh202cu8Sx0A8cfFO5xI2u81A4 +# jIKNn/0owGukwB7weFqj/vM+y1QZMhIK6GyuyDTpzKTysQ/JJYHRMQZMwmPd+S1Q +# Sktb # SIG # End signature block diff --git a/biz.dfch.PS.System.Utilities.nuspec b/src/biz.dfch.PS.System.Utilities.nuspec similarity index 89% rename from biz.dfch.PS.System.Utilities.nuspec rename to src/biz.dfch.PS.System.Utilities.nuspec index 6f32952..745a824 100644 --- a/biz.dfch.PS.System.Utilities.nuspec +++ b/src/biz.dfch.PS.System.Utilities.nuspec @@ -2,7 +2,7 @@ biz.dfch.PS.System.Utilities - 1.0.8 + 1.0.9 biz.dfch.PS.System.Utilities d-fens GmbH Ronald Rink @@ -23,10 +23,10 @@ You can download this module via [NuGet](http://nuget.org) with [Install-Package See [d-fens WebSite](http://d-fens.ch/2014/10/15/module-biz-dfch-ps-system-utilities/) or check the [Wiki](https://github.com/dfch/biz.dfch.PS.System.Utilities/wiki) for further description and examples on how to use the module. This PowerShell module contains Cmdlets to perform various actions and utilties/convenience functions such as string conversion and formatting. - 20151018 + 20151029 -* Added Update-Signature -* Added newline support in Send-ShortMessage +* Fixed install.ps1 script +* Added -Force parameter to Update-Signature (c) 2014-2015 d-fens GmbH en-US @@ -36,9 +36,10 @@ See [d-fens WebSite](http://d-fens.ch/2014/10/15/module-biz-dfch-ps-system-utili - - - + + + + @@ -60,13 +61,10 @@ See [d-fens WebSite](http://d-fens.ch/2014/10/15/module-biz-dfch-ps-system-utili - - - @@ -74,6 +72,5 @@ See [d-fens WebSite](http://d-fens.ch/2014/10/15/module-biz-dfch-ps-system-utili - \ No newline at end of file diff --git a/biz.dfch.PS.System.Utilities.psd1 b/src/biz.dfch.PS.System.Utilities.psd1 similarity index 89% rename from biz.dfch.PS.System.Utilities.psd1 rename to src/biz.dfch.PS.System.Utilities.psd1 index 570dc51..b90a7e9 100644 --- a/biz.dfch.PS.System.Utilities.psd1 +++ b/src/biz.dfch.PS.System.Utilities.psd1 @@ -1,311 +1,311 @@ -# Module manifest for module 'biz.dfch.PS.System.Utilities' - -@{ - -# Script module or binary module file associated with this manifest. -RootModule = 'biz.dfch.PS.System.Utilities.psm1' - -# Version number of this module. -ModuleVersion = '1.0.8.20151018' - -# ID used to uniquely identify this module -GUID = 'aaab9f3e-e544-4827-9db8-44bade441fc5' - -# Author of this module -Author = 'Ronald Rink' - -# Company or vendor of this module -CompanyName = 'd-fens GmbH' - -# Copyright statement for this module -Copyright = '(c) 2014-2015 d-fens GmbH. Distributed under Apache 2.0 license.' - -# Description of the functionality provided by this module -Description = 'This PowerShell module contains Cmdlets to perform various actions and utilties/convenience functions such as string conversion and formatting.' - -# Minimum version of the Windows PowerShell engine required by this module -PowerShellVersion = '3.0' - -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' - -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' - -# Minimum version of the .NET Framework required by this module -DotNetFrameworkVersion = '4.5' - -# Minimum version of the common language runtime (CLR) required by this module -# CLRVersion = '' - -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' - -# Modules that must be imported into the global environment prior to importing this module -RequiredModules = @( - 'biz.dfch.PS.System.Logging' -) - -# Assemblies that must be loaded prior to importing this module -RequiredAssemblies = @( - 'System.Net' - , - 'System.Web' - , - 'System.Web.Extensions' -) - -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -ScriptsToProcess = @( - 'Import-Module.ps1' -) - -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() - -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() - -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -NestedModules = @( - 'New-CustomErrorRecord.ps1' - , - 'Format-Xml.ps1' - , - 'ConvertFrom-UnicodeHexEncoding.ps1' - , - 'ConvertFrom-SecureStringDF.ps1' - , - 'New-SecurePassword.ps1' - , - 'ConvertTo-UrlEncoded.ps1' - , - 'ConvertFrom-UrlEncoded.ps1' - , - 'ConvertTo-Base64.ps1' - , - 'ConvertFrom-Base64.ps1' - , - 'Get-ComObjectType.ps1' - , - 'Test-StringPattern.ps1' - , - 'Import-Credential.ps1' - , - 'Export-Credential.ps1' - , - 'Get-Constructor.ps1' - , - 'Set-SslSecurityPolicy.ps1' - , - 'New-ActivityProgress.ps1' - , - 'Set-ActivityProgress.ps1' - , - 'Remove-ActivityProgress.ps1' - , - 'ConvertFrom-CmdletHelp.ps1' - , - 'Expand-CompressedItem.ps1' - , - 'Format-IpAddress.ps1' - , - 'ConvertFrom-PSCustomObject.ps1' - , - 'ConvertFrom-Hashtable.ps1' - , - 'Test-CmdletDocumentation.ps1' - , - 'Assert-CmdletDocumentation.ps1' - , - 'Send-ShortMessage.ps1' - , - 'Merge-Hashtable.ps1' - , - 'Update-Signature.ps1' -) - -# Functions to export from this module -FunctionsToExport = '*' - -# Cmdlets to export from this module -CmdletsToExport = '*' - -# Variables to export from this module -VariablesToExport = '*' - -# Aliases to export from this module -AliasesToExport = '*' - -# List of all modules packaged with this module. -# ModuleList = @() - -# List of all files packaged with this module -FileList = @( - 'biz.dfch.PS.System.Utilities.xml' - , - 'LICENSE' - , - 'NOTICE' - , - 'README.md' - , - 'Import-Module.ps1' -) - -# Private data to pass to the module specified in RootModule/ModuleToProcess -PrivateData = @{ - - "MODULEVAR" = "biz_dfch_PS_System_Utilities" -} - -# HelpInfo URI of this module -HelpInfoURI = 'http://dfch.biz/biz/dfch/PS/System/Utilities/' - -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' - -} - -# -# Copyright 2014-2015 d-fens GmbH -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# SIG # Begin signature block -# MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB -# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUwPmzbS2HEGY8jYgcFnK83DTT -# a5qgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw -# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV -# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 -# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK -# ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt -# cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l -# +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN -# d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg -# jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3 -# zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL -# 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex -# +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB -# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV -# HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs -# c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny -# bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ -# L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW -# 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W -# e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP -# PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg -# IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2 -# SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC -# BCkwggMRoAMCAQICCwQAAAAAATGJxjfoMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNV -# BAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWdu -# MRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTExMDgwMjEwMDAwMFoXDTE5MDgwMjEw -# MDAwMFowWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex -# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH -# MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPv0Z8p6djTgnY8YqDS -# SdYWHvHP8NC6SEMDLacd8gE0SaQQ6WIT9BP0FoO11VdCSIYrlViH6igEdMtyEQ9h -# JuH6HGEVxyibTQuCDyYrkDqW7aTQaymc9WGI5qRXb+70cNCNF97mZnZfdB5eDFM4 -# XZD03zAtGxPReZhUGks4BPQHxCMD05LL94BdqpxWBkQtQUxItC3sNZKaxpXX9c6Q -# MeJ2s2G48XVXQqw7zivIkEnotybPuwyJy9DDo2qhydXjnFMrVyb+Vpp2/WFGomDs -# KUZH8s3ggmLGBFrn7U5AXEgGfZ1f53TJnoRlDVve3NMkHLQUEeurv8QfpLqZ0BdY -# Nc0CAwEAAaOB/TCB+jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB -# ADAdBgNVHQ4EFgQUGUq4WuRNMaUU5V7sL6Mc+oCMMmswRwYDVR0gBEAwPjA8BgRV -# HSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl -# cG9zaXRvcnkvMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2ln -# bi5uZXQvcm9vdC1yMy5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgw -# FoAUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZIhvcNAQELBQADggEBAHmwaTTi -# BYf2/tRgLC+GeTQD4LEHkwyEXPnk3GzPbrXsCly6C9BoMS4/ZL0Pgmtmd4F/ximl -# F9jwiU2DJBH2bv6d4UgKKKDieySApOzCmgDXsG1szYjVFXjPE/mIpXNNwTYr3MvO -# 23580ovvL72zT006rbtibiiTxAzL2ebK4BEClAOwvT+UKFaQHlPCJ9XJPM0aYx6C -# WRW2QMqngarDVa8z0bV16AnqRwhIIvtdG/Mseml+xddaXlYzPK1X6JMlQsPSXnE7 -# ShxU7alVrCgFx8RsXdw8k/ZpPIJRzhoVPV4Bc/9Aouq0rtOO+u5dbEfHQfXUVlfy -# GDcy1tTMS/Zx4HYwggSfMIIDh6ADAgECAhIRIQaggdM/2HrlgkzBa1IJTgMwDQYJ -# KoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24g -# bnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzIw -# HhcNMTUwMjAzMDAwMDAwWhcNMjYwMzAzMDAwMDAwWjBgMQswCQYDVQQGEwJTRzEf -# MB0GA1UEChMWR01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMnR2xvYmFs -# U2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29kZSAtIEcyMIIBIjANBgkqhkiG9w0B -# AQEFAAOCAQ8AMIIBCgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6rJf02 -# pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPjBrOHOg5D8NcAiVOiETFSKG5d -# QHI88gl3p0mSl9RskKB2p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+yh -# RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAqtaFda92NAgIpA6p8N7u7 -# KU49U5OzpvqP0liTFUy5LauAo6Ml+6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os -# +XKwqRk5KlD6qdA8OsroW+/1X1H0+QrZlzXeaoXmIwRCrwIDAQABo4IBXzCCAVsw -# DgYDVR0PAQH/BAQDAgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYB -# BQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkG -# A1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWg -# M4YxaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFtcGluZ2cy -# LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUu -# Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0GA1Ud -# DgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNVHSMEGDAWgBRG2D7/3OO+/4Pm -# 9IWbsN1q1hSpwTANBgkqhkiG9w0BAQUFAAOCAQEAgDLcB40coJydPCroPSGLWaFN -# fsxEzgO+fqq8xOZ7c7tL8YjakE51Nyg4Y7nXKw9UqVbOdzmXMHPNm9nZBUUcjaS4 -# A11P2RwumODpiObs1wV+Vip79xZbo62PlyUShBuyXGNKCtLvEFRHgoQ1aSicDOQf -# FBYk+nXcdHJuTsrjakOvz302SNG96QaRLC+myHH9z73YnSGY/K/b3iKMr6fzd++d -# 3KNwS0Qa8HiFHvKljDm13IgcN+2tFPUHCya9vm0CXrG4sFhshToN9v9aJwzF3lPn -# VDxWTMlOTDD28lz7GozCgr6tWZH2G01Ve89bAdz9etNvI1wyR5sB88FRFEaKmzCC -# BNYwggO+oAMCAQICEhEhDRayW4wRltP+V8mGEea62TANBgkqhkiG9w0BAQsFADBa -# MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEwMC4GA1UE -# AxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1NiAtIEcyMB4XDTE1 -# MDUwNDE2NDMyMVoXDTE4MDUwNDE2NDMyMVowVTELMAkGA1UEBhMCQ0gxDDAKBgNV -# BAgTA1p1ZzEMMAoGA1UEBxMDWnVnMRQwEgYDVQQKEwtkLWZlbnMgR21iSDEUMBIG -# A1UEAxMLZC1mZW5zIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -# AQDNPSzSNPylU9jFM78Q/GjzB7N+VNqikf/use7p8mpnBZ4cf5b4qV3rqQd62rJH -# RlAsxgouCSNQrl8xxfg6/t/I02kPvrzsR4xnDgMiVCqVRAeQsWebafWdTvWmONBS -# lxJejPP8TSgXMKFaDa+2HleTycTBYSoErAZSWpQ0NqF9zBadjsJRVatQuPkTDrwL -# eWibiyOipK9fcNoQpl5ll5H9EG668YJR3fqX9o0TQTkOmxXIL3IJ0UxdpyDpLEkt -# tBG6Y5wAdpF2dQX2phrfFNVY54JOGtuBkNGMSiLFzTkBA1fOlA6ICMYjB8xIFxVv -# rN1tYojCrqYkKMOjwWQz5X8zAgMBAAGjggGZMIIBlTAOBgNVHQ8BAf8EBAMCB4Aw -# TAYDVR0gBEUwQzBBBgkrBgEEAaAyATIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 -# d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADATBgNVHSUE -# DDAKBggrBgEFBQcDAzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLmdsb2Jh -# bHNpZ24uY29tL2dzL2dzY29kZXNpZ25zaGEyZzIuY3JsMIGQBggrBgEFBQcBAQSB -# gzCBgDBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j -# YWNlcnQvZ3Njb2Rlc2lnbnNoYTJnMi5jcnQwOAYIKwYBBQUHMAGGLGh0dHA6Ly9v -# Y3NwMi5nbG9iYWxzaWduLmNvbS9nc2NvZGVzaWduc2hhMmcyMB0GA1UdDgQWBBTN -# GDddiIYZy9p3Z84iSIMd27rtUDAfBgNVHSMEGDAWgBQZSrha5E0xpRTlXuwvoxz6 -# gIwyazANBgkqhkiG9w0BAQsFAAOCAQEAAApsOzSX1alF00fTeijB/aIthO3UB0ks -# 1Gg3xoKQC1iEQmFG/qlFLiufs52kRPN7L0a7ClNH3iQpaH5IEaUENT9cNEXdKTBG -# 8OrJS8lrDJXImgNEgtSwz0B40h7bM2Z+0DvXDvpmfyM2NwHF/nNVj7NzmczrLRqN -# 9de3tV0pgRqnIYordVcmb24CZl3bzpwzbQQy14Iz+P5Z2cnw+QaYzAuweTZxEUcJ -# bFwpM49c1LMPFJTuOKkUgY90JJ3gVTpyQxfkc7DNBnx74PlRzjFmeGC/hxQt0hvo -# eaAiBdjo/1uuCTToigVnyRH+c0T2AezTeoFb7ne3I538hWeTdU5q9jGCBLcwggSz -# AgEBMHAwWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex -# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH -# MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM -# MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB -# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSGRGcsfchsHXVl -# smLMxVhSppw94jANBgkqhkiG9w0BAQEFAASCAQCn2Db5n2GNdMM/JPvmcFxi4EfS -# /TvHpaOcvUDCuY9XpgN0AoYOMM3xAbTwD5UWt0/ra8Sa8fugGE4MJXc7SIozCcQs -# 7JKMZ4Lpd1etEaUzb+QjABjCZCAs3O3ORQEiliU7byx6+VJ43Lhg9gALchZMfvSF -# vlv8dVdLHtEaLSRb6h15dHb05MFiMVG+PKWvGJ0Q9cVC6/r3xLdYaq8oFrdn+d2m -# T5VavqPZ8ya1phW0XFm15i1IT/vp++n0Cqum0VUDpVY2tkU/gaGoIhoYdZRE2ybB -# gSWVjKjfIdkCOHkQN6/DEnFQ1orRUmllrFvfltY9brgydSxa61I+M9mLYcV5oYIC -# ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX -# BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt -# ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA -# oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1 -# MTAxODExMDIzNFowIwYJKoZIhvcNAQkEMRYEFPXIiKAUFPsWO77QwfRazxBZjdbx -# MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es -# KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt -# c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh -# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQCbf2OoXpbFqVtIrAe9 -# 9opPeHSIi+qhwoHeSpOFydp1sa2PCX+PrwXC3fYnhFTJMZaB5zRzAFFAErS616tg -# H8EXFbcl5p8JeD138rWIipkiLokDiLFfmvDL9h8vaTScXiUpd01R0zsfD+GwRjKO -# iAzvuUhjrnqklYZCKkxy+OMtsP66/X15iV4mI3j0A02RE+Fu1eESS6IpUgqiQJwZ -# Hq/AxbjUCwd6pJ4jgQFQH05t3EaOt3ouALB4OJrkvdKuQa0I0rMqcJkpxMNyJYLB -# AsytAc/G/Evi5A/1Zb1TdGH/CF6dW0ZmYivtpCms1HPZPBp85rGsiYcwY9XoNpys -# 0vmz -# SIG # End signature block +# Module manifest for module 'biz.dfch.PS.System.Utilities' + +@{ + +# Script module or binary module file associated with this manifest. +RootModule = 'biz.dfch.PS.System.Utilities.psm1' + +# Version number of this module. +ModuleVersion = '1.0.9.20151029' + +# ID used to uniquely identify this module +GUID = 'aaab9f3e-e544-4827-9db8-44bade441fc5' + +# Author of this module +Author = 'Ronald Rink' + +# Company or vendor of this module +CompanyName = 'd-fens GmbH' + +# Copyright statement for this module +Copyright = '(c) 2014-2015 d-fens GmbH. Distributed under Apache 2.0 license.' + +# Description of the functionality provided by this module +Description = 'This PowerShell module contains Cmdlets to perform various actions and utilties/convenience functions such as string conversion and formatting.' + +# Minimum version of the Windows PowerShell engine required by this module +PowerShellVersion = '3.0' + +# Name of the Windows PowerShell host required by this module +# PowerShellHostName = '' + +# Minimum version of the Windows PowerShell host required by this module +# PowerShellHostVersion = '' + +# Minimum version of the .NET Framework required by this module +DotNetFrameworkVersion = '4.5' + +# Minimum version of the common language runtime (CLR) required by this module +# CLRVersion = '' + +# Processor architecture (None, X86, Amd64) required by this module +# ProcessorArchitecture = '' + +# Modules that must be imported into the global environment prior to importing this module +RequiredModules = @( + 'biz.dfch.PS.System.Logging' +) + +# Assemblies that must be loaded prior to importing this module +RequiredAssemblies = @( + 'System.Net' + , + 'System.Web' + , + 'System.Web.Extensions' +) + +# Script files (.ps1) that are run in the caller's environment prior to importing this module. +ScriptsToProcess = @( + 'Import-Module.ps1' +) + +# Type files (.ps1xml) to be loaded when importing this module +# TypesToProcess = @() + +# Format files (.ps1xml) to be loaded when importing this module +# FormatsToProcess = @() + +# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess +NestedModules = @( + 'New-CustomErrorRecord.ps1' + , + 'Format-Xml.ps1' + , + 'ConvertFrom-UnicodeHexEncoding.ps1' + , + 'ConvertFrom-SecureStringDF.ps1' + , + 'New-SecurePassword.ps1' + , + 'ConvertTo-UrlEncoded.ps1' + , + 'ConvertFrom-UrlEncoded.ps1' + , + 'ConvertTo-Base64.ps1' + , + 'ConvertFrom-Base64.ps1' + , + 'Get-ComObjectType.ps1' + , + 'Test-StringPattern.ps1' + , + 'Import-Credential.ps1' + , + 'Export-Credential.ps1' + , + 'Get-Constructor.ps1' + , + 'Set-SslSecurityPolicy.ps1' + , + 'New-ActivityProgress.ps1' + , + 'Set-ActivityProgress.ps1' + , + 'Remove-ActivityProgress.ps1' + , + 'ConvertFrom-CmdletHelp.ps1' + , + 'Expand-CompressedItem.ps1' + , + 'Format-IpAddress.ps1' + , + 'ConvertFrom-PSCustomObject.ps1' + , + 'ConvertFrom-Hashtable.ps1' + , + 'Test-CmdletDocumentation.ps1' + , + 'Assert-CmdletDocumentation.ps1' + , + 'Send-ShortMessage.ps1' + , + 'Merge-Hashtable.ps1' + , + 'Update-Signature.ps1' +) + +# Functions to export from this module +FunctionsToExport = '*' + +# Cmdlets to export from this module +CmdletsToExport = '*' + +# Variables to export from this module +VariablesToExport = '*' + +# Aliases to export from this module +AliasesToExport = '*' + +# List of all modules packaged with this module. +# ModuleList = @() + +# List of all files packaged with this module +FileList = @( + 'biz.dfch.PS.System.Utilities.xml' + , + 'LICENSE' + , + 'NOTICE' + , + 'README.md' + , + 'Import-Module.ps1' +) + +# Private data to pass to the module specified in RootModule/ModuleToProcess +PrivateData = @{ + + "MODULEVAR" = "biz_dfch_PS_System_Utilities" +} + +# HelpInfo URI of this module +HelpInfoURI = 'http://dfch.biz/biz/dfch/PS/System/Utilities/' + +# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. +# DefaultCommandPrefix = '' + +} + +# +# Copyright 2014-2015 d-fens GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# SIG # Begin signature block +# MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB +# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUFyv1Hd0iirKqafs/deCPlc8r +# DlugghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw +# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV +# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 +# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK +# ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt +# cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l +# +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN +# d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg +# jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3 +# zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL +# 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex +# +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV +# HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs +# c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny +# bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ +# L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW +# 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W +# e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP +# PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg +# IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2 +# SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC +# BCkwggMRoAMCAQICCwQAAAAAATGJxjfoMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNV +# BAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWdu +# MRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTExMDgwMjEwMDAwMFoXDTE5MDgwMjEw +# MDAwMFowWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH +# MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPv0Z8p6djTgnY8YqDS +# SdYWHvHP8NC6SEMDLacd8gE0SaQQ6WIT9BP0FoO11VdCSIYrlViH6igEdMtyEQ9h +# JuH6HGEVxyibTQuCDyYrkDqW7aTQaymc9WGI5qRXb+70cNCNF97mZnZfdB5eDFM4 +# XZD03zAtGxPReZhUGks4BPQHxCMD05LL94BdqpxWBkQtQUxItC3sNZKaxpXX9c6Q +# MeJ2s2G48XVXQqw7zivIkEnotybPuwyJy9DDo2qhydXjnFMrVyb+Vpp2/WFGomDs +# KUZH8s3ggmLGBFrn7U5AXEgGfZ1f53TJnoRlDVve3NMkHLQUEeurv8QfpLqZ0BdY +# Nc0CAwEAAaOB/TCB+jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB +# ADAdBgNVHQ4EFgQUGUq4WuRNMaUU5V7sL6Mc+oCMMmswRwYDVR0gBEAwPjA8BgRV +# HSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl +# cG9zaXRvcnkvMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2ln +# bi5uZXQvcm9vdC1yMy5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgw +# FoAUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZIhvcNAQELBQADggEBAHmwaTTi +# BYf2/tRgLC+GeTQD4LEHkwyEXPnk3GzPbrXsCly6C9BoMS4/ZL0Pgmtmd4F/ximl +# F9jwiU2DJBH2bv6d4UgKKKDieySApOzCmgDXsG1szYjVFXjPE/mIpXNNwTYr3MvO +# 23580ovvL72zT006rbtibiiTxAzL2ebK4BEClAOwvT+UKFaQHlPCJ9XJPM0aYx6C +# WRW2QMqngarDVa8z0bV16AnqRwhIIvtdG/Mseml+xddaXlYzPK1X6JMlQsPSXnE7 +# ShxU7alVrCgFx8RsXdw8k/ZpPIJRzhoVPV4Bc/9Aouq0rtOO+u5dbEfHQfXUVlfy +# GDcy1tTMS/Zx4HYwggSfMIIDh6ADAgECAhIRIQaggdM/2HrlgkzBa1IJTgMwDQYJ +# KoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24g +# bnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzIw +# HhcNMTUwMjAzMDAwMDAwWhcNMjYwMzAzMDAwMDAwWjBgMQswCQYDVQQGEwJTRzEf +# MB0GA1UEChMWR01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMnR2xvYmFs +# U2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29kZSAtIEcyMIIBIjANBgkqhkiG9w0B +# AQEFAAOCAQ8AMIIBCgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6rJf02 +# pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPjBrOHOg5D8NcAiVOiETFSKG5d +# QHI88gl3p0mSl9RskKB2p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+yh +# RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAqtaFda92NAgIpA6p8N7u7 +# KU49U5OzpvqP0liTFUy5LauAo6Ml+6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os +# +XKwqRk5KlD6qdA8OsroW+/1X1H0+QrZlzXeaoXmIwRCrwIDAQABo4IBXzCCAVsw +# DgYDVR0PAQH/BAQDAgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYB +# BQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkG +# A1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWg +# M4YxaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFtcGluZ2cy +# LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUu +# Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0GA1Ud +# DgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNVHSMEGDAWgBRG2D7/3OO+/4Pm +# 9IWbsN1q1hSpwTANBgkqhkiG9w0BAQUFAAOCAQEAgDLcB40coJydPCroPSGLWaFN +# fsxEzgO+fqq8xOZ7c7tL8YjakE51Nyg4Y7nXKw9UqVbOdzmXMHPNm9nZBUUcjaS4 +# A11P2RwumODpiObs1wV+Vip79xZbo62PlyUShBuyXGNKCtLvEFRHgoQ1aSicDOQf +# FBYk+nXcdHJuTsrjakOvz302SNG96QaRLC+myHH9z73YnSGY/K/b3iKMr6fzd++d +# 3KNwS0Qa8HiFHvKljDm13IgcN+2tFPUHCya9vm0CXrG4sFhshToN9v9aJwzF3lPn +# VDxWTMlOTDD28lz7GozCgr6tWZH2G01Ve89bAdz9etNvI1wyR5sB88FRFEaKmzCC +# BNYwggO+oAMCAQICEhEhDRayW4wRltP+V8mGEea62TANBgkqhkiG9w0BAQsFADBa +# MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEwMC4GA1UE +# AxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1NiAtIEcyMB4XDTE1 +# MDUwNDE2NDMyMVoXDTE4MDUwNDE2NDMyMVowVTELMAkGA1UEBhMCQ0gxDDAKBgNV +# BAgTA1p1ZzEMMAoGA1UEBxMDWnVnMRQwEgYDVQQKEwtkLWZlbnMgR21iSDEUMBIG +# A1UEAxMLZC1mZW5zIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDNPSzSNPylU9jFM78Q/GjzB7N+VNqikf/use7p8mpnBZ4cf5b4qV3rqQd62rJH +# RlAsxgouCSNQrl8xxfg6/t/I02kPvrzsR4xnDgMiVCqVRAeQsWebafWdTvWmONBS +# lxJejPP8TSgXMKFaDa+2HleTycTBYSoErAZSWpQ0NqF9zBadjsJRVatQuPkTDrwL +# eWibiyOipK9fcNoQpl5ll5H9EG668YJR3fqX9o0TQTkOmxXIL3IJ0UxdpyDpLEkt +# tBG6Y5wAdpF2dQX2phrfFNVY54JOGtuBkNGMSiLFzTkBA1fOlA6ICMYjB8xIFxVv +# rN1tYojCrqYkKMOjwWQz5X8zAgMBAAGjggGZMIIBlTAOBgNVHQ8BAf8EBAMCB4Aw +# TAYDVR0gBEUwQzBBBgkrBgEEAaAyATIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 +# d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADATBgNVHSUE +# DDAKBggrBgEFBQcDAzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLmdsb2Jh +# bHNpZ24uY29tL2dzL2dzY29kZXNpZ25zaGEyZzIuY3JsMIGQBggrBgEFBQcBAQSB +# gzCBgDBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j +# YWNlcnQvZ3Njb2Rlc2lnbnNoYTJnMi5jcnQwOAYIKwYBBQUHMAGGLGh0dHA6Ly9v +# Y3NwMi5nbG9iYWxzaWduLmNvbS9nc2NvZGVzaWduc2hhMmcyMB0GA1UdDgQWBBTN +# GDddiIYZy9p3Z84iSIMd27rtUDAfBgNVHSMEGDAWgBQZSrha5E0xpRTlXuwvoxz6 +# gIwyazANBgkqhkiG9w0BAQsFAAOCAQEAAApsOzSX1alF00fTeijB/aIthO3UB0ks +# 1Gg3xoKQC1iEQmFG/qlFLiufs52kRPN7L0a7ClNH3iQpaH5IEaUENT9cNEXdKTBG +# 8OrJS8lrDJXImgNEgtSwz0B40h7bM2Z+0DvXDvpmfyM2NwHF/nNVj7NzmczrLRqN +# 9de3tV0pgRqnIYordVcmb24CZl3bzpwzbQQy14Iz+P5Z2cnw+QaYzAuweTZxEUcJ +# bFwpM49c1LMPFJTuOKkUgY90JJ3gVTpyQxfkc7DNBnx74PlRzjFmeGC/hxQt0hvo +# eaAiBdjo/1uuCTToigVnyRH+c0T2AezTeoFb7ne3I538hWeTdU5q9jGCBLcwggSz +# AgEBMHAwWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH +# MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM +# MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB +# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSvqImt8Zdzt0QN +# 8vIhUffIcjsXUjANBgkqhkiG9w0BAQEFAASCAQATcYFwacd1NfRnVRUJ4vj9HJed +# f/9iHm8u67lin/i0GYoLZyHRw8ckEypFh8jgnReAYzkA/ZWQ88e/CuWNlh3/srW5 +# 8ukA0avX4/v22IEVKtCzx+9cHQ+1vwaJVCeEIHVqLIV/mFyt0K3jS/rPMvpCqx1r +# ro0pRMupdSqSLiwXrfmrkUs6HD3qlc9f6g2XG9STGvdxtJVVMsopf9d+nZTe9vD9 +# 1FjfdUfrVTuiDcJ3co9sRuYV0Bi3QhFDhSRi/ORwUVZfdABg0kRVCNkiof4Eqk/q +# fd7+Hibhcx0vptNzEyJBt+rEoNbAw6qtjDEWPgMTqCCq1ptZIj5ciyvtcl1LoYIC +# ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX +# BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt +# ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA +# oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1 +# MTAyOTA1MDMwMlowIwYJKoZIhvcNAQkEMRYEFLJ8oSTDQ3ZAqvML1tWMyQNWerm5 +# MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es +# KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +# c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh +# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQA7X2CeRg+3cjTpIT9X +# b/yejL/NlrsVXDY3A25JdRnbEgfTJp94Q1f6Y6ob1tsk8/Wvw/j8u0yRrnGm+XSd +# THqnJ0x0d+7fgvOIAjADy4JZsMVCxuJpMihdIcNg3mqvpnEqU2O6t4FJHSK80dKb +# Yx8eiHnJEt71c4xxq55hyI1sKYIvjpMTUiEsY6jCKFj5lHk4L0RkexdXhPMjRlp4 +# 8k70Z8lRY9WVMSn/fsV12s5LSsGktcGOUnCTSlxe51XtS8hVadrsCDkycY20er/A +# VLKVuOoVRJV1h6YlFssVUpgHNWYA87uThA1A6ziERhJSEh35g8xQ3AYS6pdZOgTd +# w8EI +# SIG # End signature block diff --git a/biz.dfch.PS.System.Utilities.psm1 b/src/biz.dfch.PS.System.Utilities.psm1 similarity index 100% rename from biz.dfch.PS.System.Utilities.psm1 rename to src/biz.dfch.PS.System.Utilities.psm1 diff --git a/biz.dfch.PS.System.Utilities.xml b/src/biz.dfch.PS.System.Utilities.xml similarity index 100% rename from biz.dfch.PS.System.Utilities.xml rename to src/biz.dfch.PS.System.Utilities.xml diff --git a/install.ps1 b/src/install.ps1 similarity index 92% rename from install.ps1 rename to src/install.ps1 index fcb8bb5..17198fc 100644 --- a/install.ps1 +++ b/src/install.ps1 @@ -2,7 +2,6 @@ .SYNOPSIS Installs the module into a path inside $ENV:PSModulePath. - .DESCRIPTION Installs the module into a path inside $ENV:PSModulePath. Any existing module customisations are overwritten by the @@ -182,8 +181,8 @@ begin # SIG # Begin signature block # MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUNI1DIfXPTyN0kb2A39fif2Gq -# 5RWgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUfJgiOGUm8+2kkfIAPwl0hK3N +# H+qgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw # VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV # BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 # MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK @@ -282,26 +281,26 @@ begin # MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH # MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM # MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB -# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSf9Hjjh0Q4Dwid -# fky1wbVTmpKZxTANBgkqhkiG9w0BAQEFAASCAQDFe8NPqqjRZPcBcdoYtAqiNbJ2 -# xB0tkzBtTABDIkeUIXYJ5Vxs3busRdXw22/3flx/U5jBz9gC3GrHUt9SmkSGdZi6 -# GlqbOMG2C2ChQq2z+WS8GI0tMDc5Yr/wveJQ0PViNO5MAyS2D5jUC3WtnZrj2R6m -# iARKpVMbpNg4Ykfrxl6t9Yv00Cv1oUPbh7PTvjzVMmr/nPQLY5Z2jCE2RHLPG3Bp -# d+/emXgyupeq1raK/xQ5JTarbEXOq5+tR3GePpmdj/Z/RC+7JqyfSEjC/BN9ZYAD -# MzNDq845tkoeOgihILB6y8WpAUNrSZG+1LFJ1WML3DBiOUmm2C8+5vkUe7aKoYIC +# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSq/hQnuA0ZdiI2 +# bTY1mDZcSeLzsjANBgkqhkiG9w0BAQEFAASCAQABv7HKUCXAc3kd23x+U0qCMCLr +# T2sujCsqJm6ESwmJsZYCtiVvYWTlOwOdVXcBP4KrWleo7jGkkE2qL6iTzwjd0osv +# Fw7YOqpHdTkTyXLXxmY62I6+pOt3UVS57usudiT9+UHKzTfgnI+ogH/qFs3haOqa +# iL0zgn3dHkAjK6uSbYXcApd3zmPSWNOrwX9CDoaN/z1EwxWMAVjak4WYHRSZvzQ1 +# TdQKFxOycafdJwzXkMyM453Ns27ezMGmLq/m2UcbL1DPldwaAoN+JYDkp47WxMtK +# 1Z79OBpDzuUPlZrCNqcbpL93YJyKO5f/9gFm4l8bvYQ9ZzlrPxAT7XrzXFDooYIC # ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX # BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt # ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA # oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1 -# MTAyOTA0MzQyNlowIwYJKoZIhvcNAQkEMRYEFIhZV6t5gk/F1/ymgTEly9Pi4Uro +# MTAyOTA0NTkzMlowIwYJKoZIhvcNAQkEMRYEFGAcWYmgoMOFkslPTL77130bqDlc # MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es # KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt # c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh -# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQAwvmYr/VZ2y8ll+YM9 -# dp/LDaAQVDp4+mTICW+lqRosQteSS43YXMzAXBn7vDxgMG6V14pI2ECE2gvlWRDg -# kDeHzsl6HbIzHlHoOsJvuWu3aUuoAXdwu9u4tUQRsHbMEdu38/7EovmOdwgXY/R/ -# LVGtjsD85V+TGuiRmRM/eWNiCQPoEk222cRRk2gUYy/jqqadu8XCuFAJauh0jHL/ -# hoO8LV+7IdhjUjlfrB0exQtqxfd7eu6ul41T/IbxjPjb/TFdp2rOpP24d5+hIase -# uM5SR8NXthTLg4jIDiy7D4cQRMtNcXwvToixv7EpAhamAGv+bs1/EyLCUj7Nrga/ -# 8c8R +# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQBeuPEEiEUJh7CUUVOY +# qfO0jNoNFo7oHwJS08bMNHtHFDgzZOdTLvr6nRSk17deBPlYErY3G8PduWCY13v3 +# Ko2pVcLtcOGOjQbyz5IQxH1ZqUBEP09fIaSC9DBJcPAs6C6tpnifk0RA1H5tnew5 +# tC3AhUMxazHkWN+4dQ3hWwLr8b2/r03st6ceJKdp3urCIkIVEZppvfI3k+zwmapd +# 1XyzstiOK1FATbfJNES9N8SkLZXowFcVqi10F77sedtQ0Dqy5enlxqglmyDszACZ +# gc1miYx1rjcSvlbKQU/79YpC40dhyHDvE1K3tOE8YFhOg0pKLPwAzIxbuNz2lBzE +# TMTR # SIG # End signature block