Question Job powershell qui bloque avec New-PsDrive

Plus d'informations
il y a 11 ans 6 mois #18110 par MrGears
Bonjour à tous,

je fais face à un problème dont je ne comprends pas l'origine, j'ai crée un job powershell qui contient un New-PsDrive mappé sur un serveur, et je lance une copie de mon poste local vers le Drive mappé en utilisant Copy-Item :

[code:1]Start-Job -ScriptBlock {

$shareadress = \"\\172.22.0.100\c$\"
$username = \"Springfield\Administrator\"
$pwd = \"MyPassword\"

$password = ConvertTo-SecureString -AsPlainText -Force -String $pwd
$credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,$password

New-PSDrive TEMPO -PSProvider filesystem -Root $shareadress -Credential $credentials -Scope global
Copy-Item \"C:\test.txt\" -Destination \"TEMPO:\test.txt\"

Remove-PSDrive TEMPO

}

Get-Job | Wait-Job
Get-Job | Receive-Job

Remove-Job -State Completed[/code:1]

Or lorsque j'execute celui-ci, le job se lance bien mais il reste bloqué en statut Running... je ne comprends pas pourquoi?

Lorsque j'execute le même code, sans faire de Job, cela fonctionne parfaitement.

Quelqu'un aurait une explication?

Merci d'avance ! :cheer:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 6 mois #18111 par Laurent Dardenne
Salut,
quelle version de PS et quel OS utilises-tu ?
L'ajout de trace redirigées vers un fichier local peut aider à déterminer où le job bloque.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 6 mois #18112 par MrGears
Bonjour,

j'utilise Powershell 4.0 sur Windows 7. Et mon serveur c'est du 2012 Powershell 4.0.

J'ai testé le job en utilisant des traces redirigées vers un fichier local :

[code:1]Start-Job -ScriptBlock {
$shareadress = \"\\172.22.0.100\c$\"


$username = \"Springfield\Administrator\"
$pwd = \"Mypassword\"

$password = ConvertTo-SecureString -AsPlainText -Force -String $pwd
$credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,$password

\"Mounting drive\" | out-file C:\temp\process.txt -append
New-PSDrive TEMPO -PSProvider filesystem -Root $shareadress -Credential $credentials -Scope global
\"Drive mounted. Copying files.\" | out-file C:\temp\process.txt -append

Copy-Item \"C:\test.txt\" -Destination \"TEMPO:\test.txt\"
\"Item copied\" |out-file C:\temp\process.txt -append

Remove-PSDrive TEMPO
\"Drive removed\" | out-file C:\temp\process.txt -append
}

Get-Job | Wait-Job
Get-Job | Receive-Job

Remove-Job -State Completed[/code:1]

voici le résultat de mon fichier de sortie :

Mounting drive
Drive mounted. Copying files.
Item copied
Drive removed



Cela veut dire que le job s'execute correctement, d'ailleurs je retrouve bel et bien le fichier copier sur le serveur, mais pourant le Job ne se termine pas.. il reste en running.

Merci pour votre aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 6 mois #18113 par Laurent Dardenne
Vérifie si 'les flux du job' contiennent des infos .
Sinon assure toi, avec ErrorActionPreférence=Stop, que ton code ne lève pas d'exceptions.
Au pire ajoute une instruction Exit.
Tu peux également vérifier sur MSConnect si ce n'est pas un bug référencé.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 6 mois #18114 par MrGears
Je vais vérifier au niveau des flux du job.

Cependant j'ai déjà résolu mon problème en utilisant Net-Use au lieu de New-Psdrive, comme ceci :

[code:1]Start-Job -ScriptBlock {

$destination = $letter+\"\test.txt\"
$letter = ls function:[d-z]: -n | ?{ !(test-path $_) } | random
$shareadress = \"\\172.22.0.100\c$\"
$username = \"Springfield\Administrator\"
$password = \"MyPassword\"

Net use $letter $shareadress /user:$username $pwd | Out-Null

Copy-Item \"C:\test.txt\" -Destination $destination

Net use $letter /delete | Out-Null

}

Get-Job | Wait-Job
Get-Job | Receive-Job

Remove-Job -State Completed[/code:1]

Merci pour votre aide :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 6 mois #18115 par Laurent Dardenne
MrGears écrit:

Cependant j'ai déjà résolu mon problème en utilisant Net-Use au lieu de New-Psdrive, comme ceci :

C'est effectivement une des choses à tester.
J'ai testé ton code avec un UNC local et sans code de gestion des credentials, cela ne pose pas de pb.

Si tu as le temps créé un bug sur MSconnect.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.048 secondes
Propulsé par Kunena