Lancer powershell via un service
Bonjour,
Depuis quelques jours je rencontre d'importants problèmes liés au lancement de script powershell via un service.
Je ne peux pas utiliser l'utilisateur System (et la case à coche magique qui permet d'utiliser le bureau windows) et suis obliger de me servir d'utilisateurs de l'Active Directory.
J'ai eu de curieuses expériences avec des scripts qui fonctionnaient très bien lancé à la main, et qui ne fonctionnaient plus du tout (arrêt du script, pas de code retour) une fois lancée par le service (service démarré par le même utilisateur bien entendu).
En cherchant un peu j'ai remarquer qu'une partie du problème se situait dans ma fonction de décompression et plus précisément sur la méthode
Code:
shell.application.copyhere()
J'ai donc utilisé un logiciel tiers pour ne pas être bloqué, mais je suis cette fois stoppé lorsque j'essaye d'exécuter une requête oracle.
Code:
1 2 3 4 5 6 7 8
|
$private:f_tmp = [System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient"«»)
$private:f_connectionString = "Data Source=$f_instance;User Id=$f_user;Password=$f_pwd;Integrated Security=no"
$private:f_connection = New-Object System.Data.OracleClient.OracleConnection($f_connectionString)
$private:f_command = new-Object System.Data.OracleClient.OracleCommand($f_Requete, $f_connection)
trap [System.Data.OracleClient.OracleException] { 'erreur de connection a la base'; continue}
$private:f_connection.Open() |
Précisément au moment ou j'utilise la méthode open.
Tout cela se passe sur un serveur W2k8 et j'ai découvert que les services lançaient leur scripts/opérations sous une session spéciale appelée session 0.
Je pensais que mon problème venait de là, la méthode copyhere fais appel a des interfaces graphiques, mais la méthode System.Data.OracleClient.OracleConnection.open() n'en utilise pas, je ne comprends donc pas pourquoi elle est bloquée.
Avez-vous déjà été confronté au même problème ? Comment l'avez vous résolu ?
Auriez-vous une solution dans mon cas ?
Merci pour votre aide ;)