Question exécuter script PowerShell en tache planifier windows 10

Plus d'informations
il y a 2 ans 3 mois - il y a 2 ans 3 mois #32548 par bengloo
Bonjour je cherche à exécuter script PowerShell en tache planifier .
Mon scripte fait une requette vers une base de donné distante , pour faire une extraction en csv ,il  fonctionne parfaitement quand je l'execute depuis windows powershell ISE.
#mes settings statique  top secret (query,dsn,cred,repInstall ....)
 $repInstall= "C:\Users\TOPSECRET\Documents\TOPSECRET\"

    #Bd
    $dsn = "TOPSECRET"
    $password = ConvertTo-SecureString "TOPSECRET" -AsPlainText -Force #les caractére spéciaux doive étre encodé
    $Cred = New-Object System.Management.Automation.PSCredential ("TOPSECRET", $password) #credential()
    #requette
    $query = "
    select * ......TOPSECRET
   
    "
    function Get-ODBC-Data {

       param(
       [string]$query=$(throw 'query is required.'),
       [string]$dsn,  
       [PSCredential] $cred = (Get-Credential)  
       )

       $conn = New-Object System.Data.Odbc.OdbcConnection
       $uname = $cred.UserName

       $pswd = (New-Object System.Net.NetworkCredential -ArgumentList "", $cred.Password).Password
       $conn.ConnectionString = "DSN=$dsn;Uid=$uname;Pwd=$pswd;Connection Timeout=0;"
       $conn.open()
       $cmd = New-object System.Data.Odbc.OdbcCommand($query,$conn)

       $ds = New-Object system.Data.DataSet

       (New-Object system.Data.odbc.odbcDataAdapter($cmd)).fill($ds) #| out-null
       $conn.close()
       return $ds
    }
$res = (Get-ODBC-Data -query $query -dsn $dsn -cred $Cred).Tables[0]
    $res| Export-csv ( $repInstall+"perssonel.csv")  -NoTypeInformation -delimiter ";" -Encoding Utf8

pour cela j'utilise le planificateur de tache windows 
capture si joint
   
quand la tache est executé cela me génere un csv vide comme si la fonction avais échoué , cela resemble à un probléme de permission mais l'utilisateur associer à la tache est un admin ayant tout les droit .
quelqu'un aurais t'il une idée de comment debuguer cela ?
Merci d'avance  

 
Pièces jointes :
Dernière édition: il y a 2 ans 3 mois par bengloo.

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

Plus d'informations
il y a 2 ans 3 mois #32549 par Laurent Dardenne
>>quelqu'un aurais t'il une idée de comment debuguer cela ?
Ajouter des logs.

Essaie avec un mdp codé en dur, le temps du test.

Vérifie si avec l'option 'est connecté' le script fonctionne dans le contexte de la tâche.
Au cas où voir aussi : github.com/PowerShell/PowerShell/issues/11218
Je n'ai pas tout lu...

Tutoriels PowerShell

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

Plus d'informations
il y a 2 ans 3 mois #32550 par bengloo
merci pour vos conseille
aprés avoir bricolé avec les log j'ai compris , le pc sur lequel je fait l'instal est un server que j'accéde en control a distance .
quand j'execute manuelement je le fait sous l'identité de la session distante à contrario quand j'enregistre ma tache cela prenais l'identité de ma session local. 
Bien que les deux session soit admin les conection ODBC sont declaré localement et visiblement il n'arivé donc pas à la trouver.
 

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

Plus d'informations
il y a 2 ans 3 mois #32561 par Bruce
J'ai déjà eu des erreurs sur certains serveurs et pas sur d'autres avec la même version de Windows Server installée pour l'execution de mêmes scripts PS.
Du coup après avoir un peu cherché j'utilise une méthode qui marche à 100%:
Je crée un fichier ".bat" du même nom que mon script PS et que je place dans le même répertoire.
Le contenu du fichier bat:
@echo off
PowerShell.exe -Command -NoProfile -ExecutionPolicy Bypass "%~dpn0.ps1" -Verb RunAs

Dans la tâche planifiée il suffit de choisir le fichier bat à exécuter qui lancera le script PS.

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

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