<# .NOTES =========================================================================== Created with: SAPIEN Technologies, Inc., PowerShell Studio 2015 v4.2.95 Created on: 10/25/2015 4:01 PM Created by: Organization: Filename: =========================================================================== .DESCRIPTION A description of the file. #> function Convert-CommandLineToDictionary { <# .SYNOPSIS Parses and converts the command line of a packaged executable into a Dictionary .DESCRIPTION Parses and converts the command line of a packaged executable into a Dictionary .PARAMETER Dictionary The Dictionary to load the value pairs into. .PARAMETER CommandLine The command line of the package executable .PARAMETER ParamIndicator The character used to indicate what is a parameter. .EXAMPLE $Dictionary = New-Object System.Collections.Specialized.StringDictionary Convert-CommandLineToDictionary -Dictionary $Dictionary ` -CommandLine $Commandline -ParamIndicator '-' #> Param ([ValidateNotNull()] [System.Collections.Specialized.StringDictionary]$Dictionary, [string]$CommandLine, [char]$ParamIndicator) $Params = Parse-Commandline $CommandLine for ($index = 0; $index -lt $Params.Count; $index++) { [string]$param = $Params[$index] #Clear the values $key = "" $value = "" if ($param.StartsWith($ParamIndicator)) { #Remove the indicator $key = $param.Remove(0, 1) if ($index + 1 -lt $Params.Count) { #Check if the next Argument is a parameter [string]$param = $Params[$index + 1] if ($param.StartsWith($ParamIndicator) -ne $true) { #If it isn’t a parameter then set it as the value $value = $param $index++ } } $Dictionary[$key] = $value }#else skip } } function Parse-Commandline { <# .SYNOPSIS Parses the command line of a package executable .DESCRIPTION Parses the command line of a package executable .PARAMETER Commandline The command line of the package executable .EXAMPLE $arguments = Parse-Commandline -Commandline $Commandline .INPUTS System.String .OUTPUTS System.Collections.Specialized.StringCollection #> [OutputType([System.Collections.Specialized.StringCollection])] Param ([string]$CommandLine) $Arguments = New-Object System.Collections.Specialized.StringCollection if ($CommandLine) { #Find First Quote $index = $CommandLine.IndexOf('"') while ($index -ne -1) {#Continue as along as we find a quote #Find Closing Quote $closeIndex = $CommandLine.IndexOf('"', $index + 1) if ($closeIndex -eq -1) { break #Can’t find a match } $value = $CommandLine.Substring($index + 1, $closeIndex – ($index + 1)) [void]$Arguments.Add($value) $index = $closeIndex #Find First Quote $index = $CommandLine.IndexOf('"', $index + 1) } } return $Arguments } $commandline $Dictionary = New-Object System.Collections.Specialized.StringDictionary Convert-CommandLineToDictionary -Dictionary $Dictionary ` -CommandLine $Commandline -ParamIndicator '-' $Dictionary['test'] # SIG # Begin signature block # MIIPggYJKoZIhvcNAQcCoIIPczCCD28CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUHHz8rWXAVB912djNrlPjoQn/ # hLCgggrxMIICMjCCAZugAwIBAgIQ/HIUorpM+rRMswzcUxwOBzANBgkqhkiG9w0B # AQUFADAhMR8wHQYDVQQDExZNeSBDb2RlaW5nIENlcnRpZmljYXRlMB4XDTEzMDEw # MTA0MDAwMFoXDTE5MDEwMTA0MDAwMFowITEfMB0GA1UEAxMWTXkgQ29kZWluZyBD # ZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvW/JndzJXG+L # y3ZQ22l88Mge75KyiC7qrJy5K5eAbAOQn3c8uiP9OXE+3e0fgnrSuSa21JgGBptw # k9xO+IVXUalzpVYFJvXcuj3D6p0Vqn3zSYDr0nn+CeeNYckTPdYrHo+E+mjEP0ZR # MNUDGHNXPNAGenoIJtYykT/aH0wD8Z0CAwEAAaNrMGkwEwYDVR0lBAwwCgYIKwYB # BQUHAwMwUgYDVR0BBEswSYAQRy8+6pXlNCcDhMCYvtclSKEjMCExHzAdBgNVBAMT # Fk15IENvZGVpbmcgQ2VydGlmaWNhdGWCEPxyFKK6TPq0TLMM3FMcDgcwDQYJKoZI # hvcNAQEFBQADgYEAT6Ymo77zXM9+SVuuwAY54clUbDNduUuQwRoNUqvXZfRCUeUP # PCmTgSskw+wYrvHdmS+vkiOjPI++G4vU86wBo8rFo7nWBRDhQPQtIOdXHekPwm3y # zcAJkS49mvXiVoMI8I0WoaQccRlL7y/clGshKiuoYqQHKnzXa/CJytEW1C8wggQU # MIIC/KADAgECAgsEAAAAAAEvTuFS1zANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQG # EwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UECxMHUm9vdCBD # QTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTExMDQxMzEwMDAwMFoX # DTI4MDEyODEyMDAwMFowUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNp # Z24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0g # RzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCU72X4tVefoFMNNAbr # CR+3Rxhqy/Bb5P8npTTR94kav56xzRJBbmbUgaCFi2RaRi+ZoI13seK8XN0i12pn # 0LvoynTei08NsFLlkFvrRw7x55+cC5BlPheWMEVybTmhFzbKuaCMG08IGfaBMa1h # FqRi5rRAnsP8+5X2+7UulYGY4O/F69gCWXh396rjUmtQkSnF/PfNk2XSYGEi8gb7 # Mt0WUfoO/Yow8BcJp7vzBK6rkOds33qp9O/EYidfb5ltOHSqEYva38cUTOmFsuzC # fUomj+dWuqbgz5JTgHT0A+xosmC8hCAAgxuh7rR0BcEpjmLQR7H68FPMGPkuO/lw # frQlAgMBAAGjgeUwgeIwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C # AQAwHQYDVR0OBBYEFEbYPv/c477/g+b0hZuw3WrWFKnBMEcGA1UdIARAMD4wPAYE # VR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9y # ZXBvc2l0b3J5LzAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmdsb2JhbHNp # Z24ubmV0L3Jvb3QuY3JsMB8GA1UdIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1L # MA0GCSqGSIb3DQEBBQUAA4IBAQBOXlaQHka02Ukx87sXOSgbwhbd/UHcCQUEm2+y # oprWmS5AmQBVteo/pSB204Y01BfMVTrHgu7vqLq82AafFVDfzRZ7UjoC1xka/a/w # eFzgS8UY3zokHtqsuKlYBAIHMNuwEl7+Mb7wBEj08HD4Ol5Wg889+w289MXtl525 # 1NulJ4TjOJuLpzWGRCCkO22kaguhg/0o69rvKPbMiF37CjsAq+Ah6+IvNWwPjjRF # l+ui95kzNX7Lmoq7RU3nP5/C2Yr6ZbJux35l/+iS4SwxovewJzZIjyZvO+5Ndh95 # w+V/ljW8LQ7MAbCOf/9RgICnktSzREZkjIdPFmMHMUtjsN/zMIIEnzCCA4egAwIB # AgISESEGoIHTP9h65YJMwWtSCU4DMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYT # AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxT # aWduIFRpbWVzdGFtcGluZyBDQSAtIEcyMB4XDTE1MDIwMzAwMDAwMFoXDTI2MDMw # MzAwMDAwMFowYDELMAkGA1UEBhMCU0cxHzAdBgNVBAoTFkdNTyBHbG9iYWxTaWdu # IFB0ZSBMdGQxMDAuBgNVBAMTJ0dsb2JhbFNpZ24gVFNBIGZvciBNUyBBdXRoZW50 # aWNvZGUgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALAXrqLT # tgQwVh5YD7HtVaTWVMvY9nM67F1eqyX9NqX6hMNhQMVGtVlSO0KiLl8TYhCpW+Zz # 1pIlsX0j4wazhzoOQ/DXAIlTohExUihuXUByPPIJd6dJkpfUbJCgdqf9uNyznfIH # YCxPWJgAa9MVVOD63f+ALF8Yppj/1KvsoUVZsi5vYl3g2Rmsi1ecqCYr2RelENJH # CBpwLDOLf2iAKrWhXWvdjQICKQOqfDe7uylOPVOTs6b6j9JYkxVMuS2rgKOjJfuv # 9whksHpED1wQ119hN6pOa9PSUyWdgnP6LPlysKkZOSpQ+qnQPDrK6Fvv9V9R9PkK # 2Zc13mqF5iMEQq8CAwEAAaOCAV8wggFbMA4GA1UdDwEB/wQEAwIHgDBMBgNVHSAE # RTBDMEEGCSsGAQQBoDIBHjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9i # YWxzaWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMBYGA1UdJQEB/wQMMAoG # CCsGAQUFBwMIMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwuZ2xvYmFsc2ln # bi5jb20vZ3MvZ3N0aW1lc3RhbXBpbmdnMi5jcmwwVAYIKwYBBQUHAQEESDBGMEQG # CCsGAQUFBzAChjhodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9n # c3RpbWVzdGFtcGluZ2cyLmNydDAdBgNVHQ4EFgQU1KKESjhaGH+6TzBQvZ3VeofW # CfcwHwYDVR0jBBgwFoAURtg+/9zjvv+D5vSFm7DdatYUqcEwDQYJKoZIhvcNAQEF # BQADggEBAIAy3AeNHKCcnTwq6D0hi1mhTX7MRM4Dvn6qvMTme3O7S/GI2pBOdTco # OGO51ysPVKlWznc5lzBzzZvZ2QVFHI2kuANdT9kcLpjg6Yjm7NcFflYqe/cWW6Ot # j5clEoQbslxjSgrS7xBUR4KENWkonAzkHxQWJPp13HRybk7K42pDr899NkjRvekG # kSwvpshx/c+92J0hmPyv294ijK+n83fvndyjcEtEGvB4hR7ypYw5tdyIHDftrRT1 # Bwsmvb5tAl6xuLBYbIU6Dfb/WicMxd5T51Q8VkzJTkww9vJc+xqMwoK+rVmR9htN # VXvPWwHc/XrTbyNcMkebAfPBURRGipsxggP7MIID9wIBATA1MCExHzAdBgNVBAMT # Fk15IENvZGVpbmcgQ2VydGlmaWNhdGUCEPxyFKK6TPq0TLMM3FMcDgcwCQYFKw4D # AhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwG # CisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZI # hvcNAQkEMRYEFAArJIXGAtHVr37K3p7rItZfhVN1MA0GCSqGSIb3DQEBAQUABIGA # omKebBZX99u21jB92YqnPM/x5akKZ7MEutCoY+uCsBvB8wQ2m5g5xbybCKVWPnXl # 5F9nUU7zsAc0VCwZG2vEq6lpnHdvZK4a4Kou8ek+llS1SkQnNAFP9NDbH4oB4k2n # DzKORIjOP3uFijgiud0D4p7yJKXQL91EAokeIzKbwEuhggKiMIICngYJKoZIhvcN # AQkGMYICjzCCAosCAQEwaDBSMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFs # U2lnbiBudi1zYTEoMCYGA1UEAxMfR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0Eg # LSBHMgISESEGoIHTP9h65YJMwWtSCU4DMAkGBSsOAwIaBQCggf0wGAYJKoZIhvcN # AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUxMDI1MjAyMzA3WjAj # BgkqhkiG9w0BCQQxFgQUul2kn40Zui3wUalPq/yDE0lXnAswgZ0GCyqGSIb3DQEJ # EAIMMYGNMIGKMIGHMIGEBBSzYwi01M3tT8+9ZrlV+uO/sSwp5jBsMFakVDBSMQsw # CQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UEAxMf # R2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBHMgISESEGoIHTP9h65YJMwWtS # CU4DMA0GCSqGSIb3DQEBAQUABIIBAA125/J7u1Tl1Oeks3phI1JNVquc8IsYx2S1 # RIgsUB/QWY9sb5EBAqLLyg22vfjL5VEU9IrdHx2i8Np6AjbFW98u4MFEu3j414Q6 # f2SW82xQIODeLe0b6vUQygvJ9QCKUHE+ppFFMJBAshc7J89mOg9eqoc2r91pRyKf # p5QsPi9IoQKaYmMdwq0MSLXdQWzcWmqAuFHlgBVISzSkQWpbYXMu9OxZfvNMwexV # hwmoVI0YMKIxSkHADDb+JWcUjOKM9gclgeAgG6+YYDVuq95wv2t51yFrWedn36fp # 2sM+1anPD/TWJS631lJ9flBYKZDv9usgmqk+mLR+8DzzFK6al8o= # SIG # End signature block