2010-04-20 12 views
1

J'essaie d'exécuter certaines fonctions en arrière-plan d'un script PoSh. Le travail ne se termine jamais, mais fonctionne bien lorsqu'il est appelé normal. Je l'ai réduit le problème à la ligne suivante:Sous Windows XP - Comment utiliser les tâches d'arrière-plan PowerShell nécessitant une authentification Windows?

Cette ligne fonctionne très bien:

$ws = New-WebServiceProxy "http://host/Service?wsdl" -UseDefaultCredential 

mais cela bloque en ligne pour toujours

start-job { New-WebServiceProxy "same url" -UseDefaultCredential } ` 
| wait-job | Receive-Job 

Quelques détails: le service est local, et exige l'authentification des fenêtres. Le client est XP & serveur 2003.

Pourquoi? Comment puis-je le faire fonctionner?

Répondre

0

J'ai commencé à travailler. Quel système d'exploitation utilisez-vous? XP ou 2003 peut être un problème.

start-job { 
     $zip = New-WebServiceProxy "http://www.webservicex.net/uszip.asmx?WSDL" -UseDefaultCredential 
} | Wait-Job | Receive-Job 

$zip | get-member -type method 
+0

Le service nécessite une authentification Windows –

0

Je ne dispose pas de services Web ASMX pour tester cette contre, mais si vous regardez l'aide de Start-Job vous verrez « -Authentication- et « -Credential ». La première spécifie Default, Basic, Credssp, Digest, Kerberos, Negotiate et NegotiateWithImplicitCredential. La seconde pourrait être utilisée pour fournir des informations d'identification réelles pour exécuter le travail.

Espérons que ça aide.

+0

Je récupère Start-Job: le mécanisme d'authentification spécifié "..." n'est pas supporté. Seul "Default" est supporté pour cette opération. Et il ne semble pas y avoir aucun moyen de fournir des informations d'identification non interactives –

1

Vous pouvez utiliser ConvertFrom-securestring et cmdlets ConvertTo-securestring

Une fois exécuté

$securestring = read-host -assecurestring 
convertfrom-securestring $securestring | out-file c:\securestring 

il va créer un fichier sécurisé sur le disque après que vous pouvez utiliser

$pass = Get-Content c:\securestring | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist “domain\administrator”,$pass 

et

start-job { New-WebServiceProxy "same url" -Credential $cred } | wait-job | Receive-Job 
+0

C'est utile, mais ne fonctionne que tant que mon mot de passe ne change pas. –