2016-11-14 3 views
0

Dans ma page Web, je crée un script php simple que sur le navigateur affiche uniquement mon adresse IP en tant que texte simple dans la page Web.Dans PowerShell comment comparer contenu Invoke-WebRequest à une chaîne

Donc, si j'utilise cette commande dans PowerShell:

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

-je obtenir ce résultat:

PS C:\Users\user> $ip 
193.60.50.55 

Si je vérifie quel type de variable est avec:. GetType() FullName je reçois:

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

Et si je tente de le comparer avec la même chaîne

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

j'obtenir le résultat « Faux », j'essaie aussi avec -match et -comme mais le résultat est toujours faux

Toute idée ce qui est faux

+0

Je suis un peu confus comment '$ ip = Invoke-WebRequest https: // www.mypage.com' ne renvoie qu'une seule chaîne, il devrait retourner un objet avec une tonne de propriétés, pouvez-vous poster le résultat de' $ ip | Get-Member'? –

Répondre

2

Comme Mike Garuccio pointsInvoke-WebRequest Retourne un objet. Vous voyez chaîne parce que vous avez probablement déclenché la conversion de type silencieux (en utilisant des guillemets, ou ayant $ip déclaré comme [string] avant).

Exemple:

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

1.2.3.4 

- ou -

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

1.2.3.4 

C'est ce que vous devez faire:

# 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' 

One-liner:

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

Oui, c'est ça. Merci beaucoup! – DaniKR