snippets/Module.Initialize.ps1

<#
.SYNOPSIS
    Initialize script module
.DESCRIPTION
    Initialize a script module with strict mode, explicit export, and variables that should be set by default.
#>

[System.Diagnostics.DebuggerHidden()]
param(
    # The strict mode version that will be applied to the module.
    [System.String]
    $StrictModeVersion = 'Latest'
)
#region Initialize the module.

# Set strict mode so that PowerShell helps avoid errors in the module.
Set-StrictMode -Version $StrictModeVersion
# Enable explicit export so that there are no surprises with commands exported from the module.
Export-ModuleMember
# Define PSModule and PSModuleRoot if they are not defined already (this approach is forward-compatible).
if (-not (Get-Variable -Name PSModule -Scope 0 -ErrorAction Ignore)) {
    $PSModule = $ExecutionContext.SessionState.Module
}
if (-not (Get-Variable -Name PSModuleRoot -Scope 0 -ErrorAction Ignore)) {
    $PSModuleRoot = $PSModule.ModuleBase
}

#endregion
# SIG # Begin signature block
# MIIOeAYJKoZIhvcNAQcCoIIOaTCCDmUCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUBbQcRxuWpon/cIUhHZLcnmiZ
# 7VSgggu9MIIFEjCCA/qgAwIBAgIQDf/30lhOL43pqZVZ9cJwIzANBgkqhkiG9w0B
# AQUFADBvMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVk
# IElEIENvZGUgU2lnbmluZyBDQS0xMB4XDTE0MTAwMzAwMDAwMFoXDTE1MTAwNzEy
# MDAwMFowaDELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcT
# Bk90dGF3YTEaMBgGA1UEChMRS2lyayBBbmRyZXcgTXVucm8xGjAYBgNVBAMTEUtp
# cmsgQW5kcmV3IE11bnJvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
# yADcKIOP9iVCQidTynl7vEvngadRfHx2lRVYDE6Bocjc/lKbag1QSLDrttQFzXeL
# P91qoTpzrcgb8p+bYVjRgjAf13F+v0nVfJUsoNLMK3ooke5LCXNYyu+WgyVdlBP5
# jojLXFqNNUkBnXWxeBaSty8W84yhjDz+7iNU1BU8ZnUfLfB2kZSOynLGZHJBn35G
# 6AJuQlg4WXeH/WIVc2fLldIwDfYvprZiDh0zDLJEO7WctexpIMo4hq5zMculWdfI
# cmtOtmS3FdtC1KrFJI69KDb3+eCq4Waz0IVC2oHKSsJscN4cw371qL+MlS1nYFk+
# mvk1BvA9/R1LlQqVxvjoGQIDAQABo4IBrzCCAaswHwYDVR0jBBgwFoAUe2jOKarA
# F75JeuHlP9an90WPNTIwHQYDVR0OBBYEFBvnJZmgbq9q4TuIt/KUyRwhUsmtMA4G
# A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzBtBgNVHR8EZjBkMDCg
# LqAshipodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vYXNzdXJlZC1jcy1nMS5jcmww
# MKAuoCyGKmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9hc3N1cmVkLWNzLWcxLmNy
# bDBCBgNVHSAEOzA5MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczov
# L3d3dy5kaWdpY2VydC5jb20vQ1BTMIGCBggrBgEFBQcBAQR2MHQwJAYIKwYBBQUH
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBMBggrBgEFBQcwAoZAaHR0cDov
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ29kZVNpZ25p
# bmdDQS0xLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQAiSOrc
# fefl3BAulxAMW0WYyFydPOSA3allyJp30PE6PsgHhzOZD+dOnXbc5c7VvXrDsap4
# Z3yAApQdXtX/xQJYKcaxENiEQrlB7jH8uAMakZA/Y3j1WezWCnCsSWfO4rt9orhk
# /qYRYqfmTzvRpKg2JL80Jge+G+4UN5J5+qhS6lGfJ46UnHiHgvDxyDWZksfr/ilZ
# BGrzf89IRU/cWEdlTz4yCJNzJ8LZMh4U1lsTaChgoPgWVdpgKcEfRLFiR1aYhq7u
# gzXzcEkKQaCLzBjji/dfV4BOCdQdNtsZwHJwgsaBo40pgT29U1npooxrBg9iXvPx
# AC8PYHgQfb2yb8J/MIIGozCCBYugAwIBAgIQD6hJBhXXAKC+IXb9xextvTANBgkq
# hkiG9w0BAQUFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMTEwMjExMTIwMDAwWhcNMjYwMjEwMTIwMDAw
# WjBvMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
# ExB3d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElE
# IENvZGUgU2lnbmluZyBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
# AQEAnHz5oI8KyolLU5o87BkifwzL90hE0D8ibppP+s7fxtMkkf+oUpPncvjxRoaU
# xasX9Hh/y3q+kCYcfFMv5YPnu2oFKMygFxFLGCDzt73y3Mu4hkBFH0/5OZjTO+tv
# aaRcAS6xZummuNwG3q6NYv5EJ4KpA8P+5iYLk0lx5ThtTv6AXGd3tdVvZmSUa7uI
# SWjY0fR+IcHmxR7J4Ja4CZX5S56uzDG9alpCp8QFR31gK9mhXb37VpPvG/xy+d8+
# Mv3dKiwyRtpeY7zQuMtMEDX8UF+sQ0R8/oREULSMKj10DPR6i3JL4Fa1E7Zj6T9O
# SSPnBhbwJasB+ChB5sfUZDtdqwIDAQABo4IDQzCCAz8wDgYDVR0PAQH/BAQDAgGG
# MBMGA1UdJQQMMAoGCCsGAQUFBwMDMIIBwwYDVR0gBIIBujCCAbYwggGyBghghkgB
# hv1sAzCCAaQwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL3Nz
# bC1jcHMtcmVwb3NpdG9yeS5odG0wggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5
# ACAAdQBzAGUAIABvAGYAIAB0AGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABl
# ACAAYwBvAG4AcwB0AGkAdAB1AHQAZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAg
# AG8AZgAgAHQAaABlACAARABpAGcAaQBDAGUAcgB0ACAAQwBQAC8AQwBQAFMAIABh
# AG4AZAAgAHQAaABlACAAUgBlAGwAeQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwBy
# AGUAZQBtAGUAbgB0ACAAdwBoAGkAYwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBp
# AGwAaQB0AHkAIABhAG4AZAAgAGEAcgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABl
# AGQAIABoAGUAcgBlAGkAbgAgAGIAeQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wEgYD
# VR0TAQH/BAgwBgEB/wIBADB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0
# dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2Vy
# dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYD
# VR0fBHoweDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
# QXNzdXJlZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQu
# Y29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDAdBgNVHQ4EFgQUe2jOKarA
# F75JeuHlP9an90WPNTIwHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8w
# DQYJKoZIhvcNAQEFBQADggEBAHtyHWT/iMg6wbfp56nEh7vblJLXkFkz+iuH3qhb
# gCU/E4+bgxt8Q8TmjN85PsMV7LDaOyEleyTBcl24R5GBE0b6nD9qUTjetCXL8Kvf
# xSgBVHkQRiTROA8moWGQTbq9KOY/8cSqm/baNVNPyfI902zcI+2qoE1nCfM6gD08
# +zZMkOd2pN3yOr9WNS+iTGXo4NTa0cfIkWotI083OxmUGNTVnBA81bEcGf+PyGub
# nviunJmWeNHNnFEVW0ImclqNCkojkkDoht4iwpM61Jtopt8pfwa5PA69n8SGnIJH
# QnEyhgmZcgl5S51xafVB/385d2TxhI2+ix6yfWijpZCxDP8xggIlMIICIQIBATCB
# gzBvMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
# ExB3d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElE
# IENvZGUgU2lnbmluZyBDQS0xAhAN//fSWE4vjemplVn1wnAjMAkGBSsOAwIaBQCg
# eDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEE
# AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJ
# BDEWBBRlXM7AIPzMrT49kYRlZ7PufZI0OzANBgkqhkiG9w0BAQEFAASCAQCquq4c
# ip9Y4EKfjhYaeCvaLErKOtmXfGEZev54eQIDv5dMhrdF+gPHqZD8Pt7CRusrRRS5
# UOGtdb1LhkL2O7UUIYzkh5HBQG2zWhiJEpmw675yxx72WAbajGFZYfDnD9XLXMAK
# HxkL04v4VkKgDi0wkNv7w9ssg8lG+KvP+8/aOud9U6HZGyPSB7Kf9sAsn8wdrOzp
# m2HEi6swLAYIFbau7l8bSNokJ4Fyv9iIhT/HzMLk5vaQ3Xo7IXY7qS04L7WkKolW
# 6Vh5MTDcGRIXVQUsrQhd8KTuqIpQdRvuVLnOiWMawzFzvNEAl4OGFom3n/FUF/ty
# rg9selGQUDwFT4wY
# SIG # End signature block