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 69%
rename from install.ps1
rename to src/install.ps1
index de15b6b..17198fc 100644
--- a/install.ps1
+++ b/src/install.ps1
@@ -1,65 +1,86 @@
+<#
+.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 +90,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 +142,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
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUfJgiOGUm8+2kkfIAPwl0hK3N
+# H+qgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw
# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV
# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0
# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK
@@ -282,26 +281,26 @@ BEGIN
# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH
# MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM
# MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB
-# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBT8rm/qCXlDeO38
-# gsmpBZQMoi/R1DANBgkqhkiG9w0BAQEFAASCAQAqxzoX5CT0R039KHNaPgZGYF2l
-# O95oF3Y2tzg1yT1oD/xdCPEyiY5Mdk9nKC9gp84wzo7OqjNQ4pvxWeId4OYcrzxP
-# j45pWRqpxHS8atpG3OlV2VdnyyiaAmOkNBpfgVtGDulxSFpmRdOiVkTk1AncJKdg
-# dWFBtDKaOUc3d78KaqOpRQJTCzgL5nvVZ3LWiHwTuBdAK8tJstqfA7m03tnfBJdh
-# K15dPgVo/OYPB24b9AqE1UXbn7rpCXW4Pq2ZBHWYaEAZcMIujG7mTK4CM0+q4yVQ
-# Y9qLlGcqCbB+vYrvCYYrFdJ6mq90djuh64U+GvA0uTBaijAPQh3zsbVPNfhloYIC
+# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSq/hQnuA0ZdiI2
+# bTY1mDZcSeLzsjANBgkqhkiG9w0BAQEFAASCAQABv7HKUCXAc3kd23x+U0qCMCLr
+# T2sujCsqJm6ESwmJsZYCtiVvYWTlOwOdVXcBP4KrWleo7jGkkE2qL6iTzwjd0osv
+# Fw7YOqpHdTkTyXLXxmY62I6+pOt3UVS57usudiT9+UHKzTfgnI+ogH/qFs3haOqa
+# iL0zgn3dHkAjK6uSbYXcApd3zmPSWNOrwX9CDoaN/z1EwxWMAVjak4WYHRSZvzQ1
+# TdQKFxOycafdJwzXkMyM453Ns27ezMGmLq/m2UcbL1DPldwaAoN+JYDkp47WxMtK
+# 1Z79OBpDzuUPlZrCNqcbpL93YJyKO5f/9gFm4l8bvYQ9ZzlrPxAT7XrzXFDooYIC
# ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX
# BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt
# ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA
# oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1
-# MTAxODExMDMwNVowIwYJKoZIhvcNAQkEMRYEFEHIruJsd+Vs7sOYHwPOtOXfmUEp
+# MTAyOTA0NTkzMlowIwYJKoZIhvcNAQkEMRYEFGAcWYmgoMOFkslPTL77130bqDlc
# 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/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQBeuPEEiEUJh7CUUVOY
+# qfO0jNoNFo7oHwJS08bMNHtHFDgzZOdTLvr6nRSk17deBPlYErY3G8PduWCY13v3
+# Ko2pVcLtcOGOjQbyz5IQxH1ZqUBEP09fIaSC9DBJcPAs6C6tpnifk0RA1H5tnew5
+# tC3AhUMxazHkWN+4dQ3hWwLr8b2/r03st6ceJKdp3urCIkIVEZppvfI3k+zwmapd
+# 1XyzstiOK1FATbfJNES9N8SkLZXowFcVqi10F77sedtQ0Dqy5enlxqglmyDszACZ
+# gc1miYx1rjcSvlbKQU/79YpC40dhyHDvE1K3tOE8YFhOg0pKLPwAzIxbuNz2lBzE
+# TMTR
# SIG # End signature block