none
Execution d'un script impossible en powershell RRS feed

  • Question

  • Bonjour,

    J'ai un soucis sur ce bout de code qui permet d'ouvrir un explorer pour sélectionner un fichier et récupérer le chemin danas la variable $path. j'utilise ce bout de code dans un script plus complet.

    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
        $objForm = New-Object System.Windows.Forms.OpenFileDialog
        $objForm.InitialDirectory = "c:\"
        $objForm.Title = "Selectionner un fichier :"
        $objForm.FilterIndex = 3
        $Show = $objForm.ShowDialog()
        If ($Show -eq "Cancel"){
            "Annulé par l'utilisateur"
        } Else {
            $path = $objForm.FileName
            Write-Host $path
        }

    Le soucis avec ce code est qu'il fonctionne très bien sous "powershell_ise" qui me sert à développer mais par contre lorsque je le lance en Powershell rien ne se passe, la fenêtre d'explorer ne s'ouvre pas !!! et j'ai absolument besoin de le lancer via powershell.

    Quelqu'un aurait-il une idée ?

    Merci.

    jeudi 3 novembre 2016 00:26

Réponses

  • Bonjour,

    Super c'est exactement ce que je cherchais, grace a ce code pour lancer la ps1 mon explorer se lance et il est fonctionnel

    voici ma commande pour lancer le script "test.ps1" situé à la racine de c:

    cd /d %~dp0
    "%SYSTEMROOT%\system32\windowspowershell\v1.0\powershell.exe" -sta -Command "& {c:\test.ps1}" -NoExit

    Merci encore Claude.

    Par contre pour la solution d'Héritier permet en effet de lancer les script mais ne solutionnais pas dans mon cas de figure.

    jeudi 3 novembre 2016 13:35

Toutes les réponses

  • Bonjour mika83_hotmail.fr

    Par défaut Windows Powershell interdit d'exécution d'un script. donc si vous exécutez cette commande sur votre console powershell 

    Get-ExecutionPolicy

    vous aurez comme résultat 

    Restricted

    et voici le message que vous recevez quand vous exécutez votre script

    .\Explorateur.ps1 : File X:\Heritier KANDOLO #root\Commande #root\Mes POWERSHELLs\Script\Explorateur.ps1 cannot be
    loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at
    http://go.microsoft.com/fwlink/?LinkID=135170.
    At line:1 char:1
    + .\Explorateur.ps1
    + ~~~~~~~~~~~~~~~~~
        + CategoryInfo          : SecurityError: (:) [], PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess

    Pour que votre script passe, vous devrez changer la stratégie d'exécution en Bypass par exemple 

    Set-ExecutionPolicy Bypass

    puis exécuter votre script. 

    sinon voici le lien qui vous explique en détail sur les stratégies d'exécution d'un script powershell

    Cliquez ICI

    Merci, a+


    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. Héritier KANDOLO. http://www.rootandadmin.com/

    jeudi 3 novembre 2016 09:03
  • Bonjour,

    Vous devez autoriser l'exécution des scripts en tapant dans une console PowerShell exécutée en tant qu'administrateur :

    Set-ExecutionPolicy unrestricted

    Ensuite, vous pouvez utiliser facultativement le fichier de commande suivant pour lancer le script PowerShell:

    cd /d %~dp0
    "%SYSTEMROOT%\system32\windowspowershell\v1.0\powershell.exe" -sta -Command "& {.\%~n0.ps1}" -NoExit

    Sauvegardez ces 2 lignes dans un fichier avec une extension .cmd et qui porte exactement le même nom que le script PowerShell (sans l'extension .ps1). C'est facultatif mais cela permet de lancer le script avec une tâche planifiée.


    Les conseils, informations ou suggestions proposés sont fournis sans aucune garantie.


    jeudi 3 novembre 2016 09:54
  • Bonjour,

    Super c'est exactement ce que je cherchais, grace a ce code pour lancer la ps1 mon explorer se lance et il est fonctionnel

    voici ma commande pour lancer le script "test.ps1" situé à la racine de c:

    cd /d %~dp0
    "%SYSTEMROOT%\system32\windowspowershell\v1.0\powershell.exe" -sta -Command "& {c:\test.ps1}" -NoExit

    Merci encore Claude.

    Par contre pour la solution d'Héritier permet en effet de lancer les script mais ne solutionnais pas dans mon cas de figure.

    jeudi 3 novembre 2016 13:35