web-dev-qa-db-fra.com

Enter-PSSession ne fonctionne pas dans mon script Powershell

Lorsque j'exécute les lignes ci-dessous à partir d'un script, le fichier finit par être créé sur ma machine locale.

$cred = Get-Credential domain\DanTest
Enter-PSSession -computerName xsappb01 -credential $cred

New-Item -type file c:\temp\blahxsappk02.txt

exit-pssession

Lorsque j'exécute chaque ligne individuellement à partir de la console PowerShell, la session distante est créée correctement et le fichier est créé sur la machine distante. Des réflexions sur pourquoi? Est-ce un problème de timing du script peut-être?

34
Dan Snell

Je ne sais pas si c'est un problème de timing. Je soupçonne que c'est plus comme Enter-PSSession invoque quelque chose comme une invite imbriquée et vos commandes suivantes ne s'exécutent pas à l'intérieur. Quoi qu'il en soit, je crois que Enter/Exit-PSSession est destiné à une utilisation interactive - pas à une utilisation de script. Pour les scripts, utilisez New-PSSession et passez cette instance de session dans Invoke-Command, par exemple:

$cred = Get-Credential domain\DanTest 
$s = New-PSSession -computerName xsappb01 -credential $cred
Invoke-Command -Session $s -Scriptblock {New-Item -type file c:\temp\blah.txt}
Remove-PSSession $s
65
Keith Hill