I have a string like
Set-Cookie:
ehCookie="X0xhc3RFbnRyeVVSTENvbnRleHQ9aHR0cHM6Ly93d3c5LmNtLmVoZWFsdGhpbnN1cmFuY2UuY29tL2VoaS9ORVdCT0xvZ2luLmRzfF9MYXN0VVJMPWh0dHBzOi8vd3d3OS5jbS5laGVhbHRoaW5zdXJhbmNlLmNvbS9laGkvRGlzcGF0Y2guZnN8X0xhc3RXZWJDb250ZXh0PUJPfF9TZXNzaW9uU3RhcnQ9MDUtMjItMjAyMSAwMjoxMTo0M3xfV2ViQ29udGV4dD1CTw=="; Version=1; Path=/; Secure; HttpOnly,bov1-route=1621674704.476.8922.899787; Path=/; Secure; HttpOnly,JSESSIONID=304447EB52E6D43AB4ABA1191D92D07A; Path=/; Secure; HttpOnly
I want to parse the value of ehCookie
& JSESSIONID
like
X0xhc3RFbnRyeVVSTENvbnRleHQ9aHR0cHM6Ly93d3c5LmNtLmVoZWFsdGhpbnN1cmFuY2UuY29tL2VoaS9ORVdCT0xvZ2luLmRzfF9MYXN0VVJMPWh0dHBzOi8vd3d3OS5jbS5laGVhbHRoaW5zdXJhbmNlLmNvbS9laGkvRGlzcGF0Y2guZnN8X0xhc3RXZWJDb250ZXh0PUJPfF9TZXNzaW9uU3RhcnQ9MDUtMjItMjAyMSAwMjoxMTo0M3xfV2ViQ29udGV4dD1CTw==
and
304447EB52E6D43AB4ABA1191D92D07A
How do I go about writing a powershell script for this. Any help will be greatly appreciated.
You could do something like ($str
contains the string to parse):
if ($str -match 'ehCookie=([^;]+).*JSESSIONID=([\dA-F]+)') {
$ehCookie = $matches[1]
$jSessionId = $matches[2]
}
OR
$ehCookie = ([regex]'(?i)ehCookie=([^;]+)').Match($str).Groups[1].Value
$jSessionId = ([regex]'(?i)JSESSIONID=([\dA-F]+)').Match($str).Groups[1].Value
Regex details:
ehCookie= Match the characters “ehCookie=” literally
( Match the regular expression below and capture its match into backreference number 1
[^;] Match any character that is NOT a “;”
+ Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
. Match any single character that is not a line break character
* Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
JSESSIONID= Match the characters “JSESSIONID=” literally
( Match the regular expression below and capture its match into backreference number 2
[\dA-F] Match a single character present in the list below
A single digit 0..9
A character in the range between “A” and “F”
+ Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
In the second example, the (?i)
makes the .Match
case-insensitive, which is not needed when using the -match
operator as used in the first example