0

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.

1 Answer 1

6

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

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks so much for the detailed explanation and taking out time to work on this

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.