我想將一個變量作爲參數傳遞給SessionVariable
,這樣我就可以使用任何名稱作爲SessionObject
,這樣我就可以測試/發送到其他函數,並且不開心硬編碼。即通過$TCSessionVar
而不是硬編碼的TCSessionVar
參數。在Invoke-WebRequest中的SessionVariable參數化
$Response= Invoke-WebRequest -Uri $TeamCityUrl `
-SessionVariable $TCSessionVar -Method `
Get -Headers @{"Authorization"="Basic $Encoded"}
$ReturnObject =New-Object PSCustomObject @{
SessionVar=[Microsoft.PowerShell.Commands.WebRequestSession]$TCSessionVar
Response=$Response
}
我得到的錯誤是:
無法將類型 「System.String」 的 「Microsoft.PowerShell.Commands.WebRequestSession」 價值型 「Microsoft.PowerShell.Commands.WebRequestSession」 。
- 注:我可以創建從響應WebReuestSessionObject,但隨後SessionVariable是毫無意義的..
$TCCookieName="TCSESSIONID"
$Cookies=$Response.Headers.'set-cookie'
$TCCookie= $cookies.Split(";")| Where-Object {$_ -match $TCCookieName}
$CookieName=$TCCookie.Split("=")[0]
$CookieValue=$TCCookie.Split("=")[1]
$TCSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$cookie = New-Object System.Net.Cookie
$cookie.Name = $CookieName
$cookie.Value = $CookieValue
$cookie.Domain=([uri]$TeamCityUrl).Host
$TCSession.Cookies.Add($cookie);