locked
Comment Remote signer un Fichier Ps1 pour une exécution automatique en powershell RRS feed

  • Discussion générale

  • Comment Remote signer un Fichier Ps1 pour une exécution automatique

    Depuis la mise à jour de la R3 il faut mettre le paramètre dans powershell

    Set-ExecutionPolicy RemoteSigned

    Malheureusement les scripts maison ne fonctionne plus en passant le parser ne fonctionne plus également :

    Voici l’erreur que vous avez en Powershell :

    File C:\liveedu\AIMPORT\ImportUser.ps1 cannot be loaded. The file C:\liveedu\AI
    
    MPORT\ImportUser.ps1 is not digitally signed. The script will not execute on th
    
    e system. Please see "get-help about_signing" for more details..
    
    Pour cela il suffit de changer le mode de sécurité

     

    Set-ExecutionPolicy Unrestricted

    Mais au lancement des scripts maison l’invite de commande oblige l’utilisateur à appuyer sur R

    C:\Liveedu\AImport>powershell.exe c:\liveedu\aimport\login.ps1
    
    Security Warning                  
    
    Run only scripts that you trust. While scripts from the Internet can be useful,
    
     this script can potentially harm your computer. Do you want to run
    
    C:\liveedu\AIMPORT\ImportUser.ps1?
    
    [D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D"):

    La vérification de sécurité des script se fait au niveau de l’API "Attachment Execution Service" (AES)  

    Tout fichier téléchargé d’internet ou non signé en exécution passe par service en powershell. La méthode appelée est IAttachmentExecute et ajoute un identifier au fichier. Si le fichier ne détient pas d’identifier signé alors le fichier est considéré comme non sécurisé.

    Pou connaitre si un fichier est sécurisé il suffit d’appeler la méthode System.Security.Policy.Zone.CreateFromUrl. qui va nous fournir l’information de la zonede sécurité du fichier.

    les fichiers non signés ou téléchargés à partir d’internet son en ZoneId : Internet = 3, scripts dans powershell :ZoneId :

    SecurityZone
    {
    
            NoZone = -1,
            MyComputer = 0,
            Intranet = 1,
            Trusted = 2,
            Internet = 3,
            Untrusted = 4,
    }
    

     

    Pour passer les fichier en signé, il faut le mettre en ZoneId 2.

    Pour modifier l’identifier du fichier ps1 :

    1.       Télécharger un fichier powershell exemple le Remote PowerShell CSVParser http://go.microsoft.com/fwlink/?LinkID=142060

    ·         Ouvrir le flux de données Zone.Indentifier avec Notepad :
    Démarrer executer la commande suivante :


    Une fenêtre notepad s’ouvre avec le titre Parser.Ps1 :Zone.Identifier

     

    notepad c:\MonRepertoire\Parser.Ps1:Zone.Identifier


    2.      

    3.       Modifier le contenu pour seulement avoir :

    [ZoneTransfer]
    
    ZoneId=2

    4.       Enregistrer le ficher Fichier/Enregistrer ou Crtl/S

    5.       Lancer powershell

    6.      Taper la commande Set-ExecutionPolicy RemoteSigned et fermer Powershell

    7.       Vous pouvez maintenant lancer le parser sans avoir de messages d’erreur




     
    http://blogs.msdn.com/powershell/archive/2007/03/07/how-does-the-remotesigned-execution-policy-work.aspx

      http://www.hanselman.com/blog/SigningPowerShellScripts.aspx








    ------------------------------------ Administrateur Viacesi Mail Live@Edu http://viacesi.spaces.live.com ------------------------------------

     

    • Modifié Wilhem lundi 25 mai 2009 06:21
    lundi 25 mai 2009 06:14