在PowerShell中如何将Invoke-WebRequest内容与字符串进行比较

时间:2016-11-14 22:38:50

标签: string powershell compare invoke webrequest

在我的网页中,我创建了简单的php脚本,在浏览器上只显示我的IP地址作为网页中的简单文本。

因此,如果我在PowerShell中使用此命令:

$ip = Invoke-WebRequest https://www.mypage.com
$ip

我得到了这个结果:

PS C:\Users\user> $ip
193.60.50.55

如果我检查哪种变量:GetType()。FullName我得到:

PS C:\Users\user> $ip.GetType().FullName
System.String

如果我尝试将它与相同的字符串进行比较

PS C:\Users\user> $ip = Invoke-WebRequest https://www.mypage.com
$ip2 = "193.60.50.55"
$ip -eq $ip2

我得到结果"错误",我也尝试使用-match和-like但结果总是错误

任何想法出了什么问题

1 个答案:

答案 0 :(得分:2)

由于Mike Garuccio points Invoke-WebRequest返回对象。您正在看到字符串,因为您可能以某种方式触发了静默类型转换(使用引号,或之前将$ip声明为[string])。

示例:

$ip = Invoke-WebRequest -Uri http://icanhazip.com/ -UseBasicParsing
"$ip"

1.2.3.4

- 或 -

[string]$ip = ''
$ip = Invoke-WebRequest -Uri http://icanhazip.com/ -UseBasicParsing
$ip

1.2.3.4

这是你应该做的:

# Get responce content as string
$ip = (Invoke-WebRequest -Uri http://icanhazip.com/ -UseBasicParsing).Content

# Trim newlines and compare
$ip.Trim() -eq '1.2.3.4'

一衬垫:

(Invoke-WebRequest -Uri http://icanhazip.com/ -UseBasicParsing).Content.Trim() -eq '1.2.3.4'