PowerShell v3 Invoke-WebRequest: problèmes liés aux formulaires
Depuis que j'ai mis à niveau vers Windows 8 beaucoup de mes scripts PowerShell en s'appuyant sur le lancement d'une invisible IE de ne pas assez travailler plus, donc j'ai essayé de passer à l' Invoke-WebRequest de commande. J'ai fait beaucoup de recherches sur google, mais ne peut toujours pas obtenir mon script fonctionne.
C'est ce qu'il doit faire:
- de chargement d'un site web avec un formulaire simple (nom d'utilisateur, mot de passe, le bouton "soumettre"),
- entrez les informations d'identification
- et de l'envoyer.
Avec la fonction "aide" de l'incroyablement mauvais Microsoft tech-net des exemples (au moins pour moi), j'ai reconstitué l'ensemble suivant:
$myUrl = "http://some.url"
$response = Invoke-WebRequest -Uri $myUrl -Method Default -SessionVariable $rb
$form = $response.Forms[0]
$form.Fields["user"] = "username"
$form.Fields["password"] = "password"
$response = Invoke-WebRequest -Uri $form.Action -WebSession $rb -Method POST
$response.StatusDescriptionOK
Je reçois deux erreurs, la première lors de la tentative d'écriture dans "l'utilisateur" champ:
Ne peut pas indexer dans un null tableau.
$form.Champs["utilisateur"] = "nom d'utilisateur"
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray
La deuxième on a à faire avec la $form.Action
dont je n'ai aucune idée de ce qu'il faut lire:
Invoke-WebRequest : Ne peut pas valider l'argument de paramètre "Uri". L'argument est
null ou vide. Fournir un argument qui n'est pas null ou vide, puis lancez la commande
de nouveau.
Encore une fois, je m'appuyais beaucoup sur exemple #2 chez Microsoft.
EDIT: Merci à hammar pour la capitalisation. Où sont mes manières? 😉
source d'informationauteur Phil Strahl
Vous devez vous connecter pour publier un commentaire.
Essayez de faire le post directement par ex.:
De résoudre votre problème avec la non-signé/de certificats non fiables, ajoutez la ligne
avant de l'Invoquer-WebRequest déclaration
L'exemple de la question des œuvres, mais vous devez utiliser les
rb
et pas$rb
dans la première ligne:J'ai également eu à utiliser
($myUrl + '/login')
car c'est ma connexion adresse.$response = Invoke-WebRequest -Uri ($myUrl + '/login') -Méthode par Défaut -SessionVariable rb
Et dans la dernière ligne utilisée
($myUrl + $form.Action)
: