Question
Powershell, les tableaux et les fichiers CSV
- Evea
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 11 ans 1 mois #19056
par Evea
D'accord, je comprends mieux
J'aurais une toute dernière enfin, normalement, ça sera la dernière
) question
Je vous montre la version finale :
[code:1]### Choix du fichier à utiliser ###
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.InitialDirectory = \"C:\Users\nom_user\Documents\"
$objForm.Filter = \"csv files (*.csv)|*.csv\"
$objForm.Title = \"Veuillez sélectionner un fichier...\"
$Show = $objForm.ShowDialog()
$fichier = Import-Csv $objForm.FileName -Delimiter \";\"
### Parametres mail ###
$serveurSMTP = \"X.X.X.X\"
$mailFrom = \"blabla@mail.fr\"
$pj = \"C:\pj.txt\"
$objet = \"Test\"
$i = 0
$fichier | where {$_.mail -ne $null} | foreach {
$body = \"Bonjour $($_.qualite) $($_.nom),`n`n\"
$body += Get-Content \"C:\Users\test.txt\"
$mailTo = $_.mail
Send-MailMessage -to $mailTo -subject $objet -body $body -SmtpServer $serveurSMTP -from $mailFrom -Attachments $pj
if (!($i % 50)) {
write-host \"Pause d'une minute\"
start-sleep -s 60
}
$i++
}[/code:1]
Quand je l'exécute dans le \"Powershell ISE\", tout fonctionne, et je suis contente
Mais quand je l'exécute via l'invite de commande Powershell, ou le cmd traditionnel, là, ça bloque, et j'ai tout un tas d'erreur ( hpics.li/86d8181 )
Pour la 1ère erreur, je me suis dit qu'il était peut-être nécessaire d'importer la classe qui contient la méthode/fonction/je ne sais pas trop comment ça s'appelle (j'ai encore du mal avec les termes en PS) \"System.Windows.Forms.OpenFileDialog\".
j'ai donc rajouté au début du script :
[code:1]Add-Type -AssemblyName System.Windows.Forms[/code:1]
Mais c'est presque pire, puisqu'après cet ajout, quand j'exécute mon script dans l'invite de commande PS, absolument rien ne se passe...
Je suis en train de faire de petites améliorations dans mon script, qui font que, par exemple, on pourra choisir un (ou plusieurs) pièce(s) jointe(s), on pourra taper l'objet du mail dans une invite, ou ce genre de choses, donc l'apparition de ces erreurs ne m'arrangent pas trop...<br><br>Message édité par: Callypso, à: 16/02/15 16:02
Réponse de Evea sur le sujet Re:Powershell, les tableaux et les fichiers CSV
Le raccourcis de l'opérateur -Not.
D'accord, je comprends mieux
J'aurais une toute dernière enfin, normalement, ça sera la dernière
Je vous montre la version finale :
[code:1]### Choix du fichier à utiliser ###
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.InitialDirectory = \"C:\Users\nom_user\Documents\"
$objForm.Filter = \"csv files (*.csv)|*.csv\"
$objForm.Title = \"Veuillez sélectionner un fichier...\"
$Show = $objForm.ShowDialog()
$fichier = Import-Csv $objForm.FileName -Delimiter \";\"
### Parametres mail ###
$serveurSMTP = \"X.X.X.X\"
$mailFrom = \"blabla@mail.fr\"
$pj = \"C:\pj.txt\"
$objet = \"Test\"
$i = 0
$fichier | where {$_.mail -ne $null} | foreach {
$body = \"Bonjour $($_.qualite) $($_.nom),`n`n\"
$body += Get-Content \"C:\Users\test.txt\"
$mailTo = $_.mail
Send-MailMessage -to $mailTo -subject $objet -body $body -SmtpServer $serveurSMTP -from $mailFrom -Attachments $pj
if (!($i % 50)) {
write-host \"Pause d'une minute\"
start-sleep -s 60
}
$i++
}[/code:1]
Quand je l'exécute dans le \"Powershell ISE\", tout fonctionne, et je suis contente
Mais quand je l'exécute via l'invite de commande Powershell, ou le cmd traditionnel, là, ça bloque, et j'ai tout un tas d'erreur ( hpics.li/86d8181 )
Pour la 1ère erreur, je me suis dit qu'il était peut-être nécessaire d'importer la classe qui contient la méthode/fonction/je ne sais pas trop comment ça s'appelle (j'ai encore du mal avec les termes en PS) \"System.Windows.Forms.OpenFileDialog\".
j'ai donc rajouté au début du script :
[code:1]Add-Type -AssemblyName System.Windows.Forms[/code:1]
Mais c'est presque pire, puisqu'après cet ajout, quand j'exécute mon script dans l'invite de commande PS, absolument rien ne se passe...
Je suis en train de faire de petites améliorations dans mon script, qui font que, par exemple, on pourra choisir un (ou plusieurs) pièce(s) jointe(s), on pourra taper l'objet du mail dans une invite, ou ce genre de choses, donc l'apparition de ces erreurs ne m'arrangent pas trop...<br><br>Message édité par: Callypso, à: 16/02/15 16:02
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 1 mois #19057
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Powershell, les tableaux et les fichiers CSV
Callypso écrit:
Pour lister les assemblies :
[code:1]
[System.AppDomain]::CurrentDomain.GetAssemblies()|
select-Object Location|split-path -Leaf
[/code:1]
Callypso écrit:
Callypso écrit:
[code:1]
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.GetType()|Select *
#cf. Module et Assembly
[/code:1]
Callypso écrit:
vérifie si le modèle de thread de la session courante est 'STA' :
Callypso écrit:
ISE est une application graphique, qui charge de nombreux assemblies (.dll) :Quand je l'exécute dans le \"Powershell ISE\", tout fonctionne
Pour lister les assemblies :
[code:1]
[System.AppDomain]::CurrentDomain.GetAssemblies()|
select-Object Location|split-path -Leaf
[/code:1]
Callypso écrit:
Un seule en fait, mais plusieurs lignes référencent l'objet devant être créé. L'erreur se propage...j'ai tout un tas d'erreur
Callypso écrit:
Un assembly, c'est un terme dotNet pas Powershell.je ne sais pas trop comment ça s'appelle
[code:1]
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.GetType()|Select *
#cf. Module et Assembly
[/code:1]
Callypso écrit:
Sous Seven x64 et PS v4 cela fonctionne.absolument rien ne se passe...
vérifie si le modèle de thread de la session courante est 'STA' :
Callypso écrit:
Si c'est 'MTA', il faut exécuter PS avec le switch -STA.[System.Threading.Thread]::CurrentThread.GetApartmentState()
#STA
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Powershell, les tableaux et les fichiers CSV