Question Powershell, les tableaux et les fichiers CSV

Plus d'informations
il y a 11 ans 1 mois #19056 par Evea

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 :P) 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 :laugh:

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.

Plus d'informations
il y a 11 ans 1 mois #19057 par Laurent Dardenne
Callypso écrit:

Quand je l'exécute dans le \&quot;Powershell ISE\&quot;, tout fonctionne

ISE est une application graphique, qui charge de nombreux assemblies (.dll) :
Pour lister les assemblies :
[code:1]
[System.AppDomain]::CurrentDomain.GetAssemblies()|
select-Object Location|split-path -Leaf
[/code:1]
Callypso écrit:

j'ai tout un tas d'erreur

Un seule en fait, mais plusieurs lignes référencent l'objet devant être créé. L'erreur se propage...
Callypso écrit:

je ne sais pas trop comment ça s'appelle

Un assembly, c'est un terme dotNet pas Powershell.
[code:1]
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.GetType()|Select *
#cf. Module et Assembly
[/code:1]
Callypso écrit:

absolument rien ne se passe...

Sous Seven x64 et PS v4 cela fonctionne.
vérifie si le modèle de thread de la session courante est 'STA' :
Callypso écrit:

[System.Threading.Thread]::CurrentThread.GetApartmentState()
#STA

Si c'est 'MTA', il faut exécuter PS avec le switch -STA.

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