web-dev-qa-db-fra.com

Ignorer le script en cours d'exécution "Avertissement de sécurité" à partir de la ligne de commande

J'essaie d'exécuter un script à partir d'un dossier partagé en lequel j'ai confiance:

PowerShell -file "\\server\scripts\my.ps1"

Mais je reçois un avertissement de sécurité et je dois appuyer sur 'R' pour continuer

Avertissement de sécurité N'exécutez que les scripts qui vous faites confiance. Alors que les scripts du Internet peut être utile, ce script peut potentiellement nuire à votre ordinateur. Faire vous voulez courir \serveur\scripts\my.ps1? [D] Ne pas exécuter [R] Exécuter une fois [S] Suspendre [?] Aide (la valeur par défaut est "D"): d

Puis-je ignorer cet avertissement? Le pseudo-code souhaité est le suivant:

PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"
57
alex2k8

Ceci est abordé dans "Stratégies d’exécution de PowerShell en images standard" sur le blog de Lee Holmes et "Principes directeurs de sécurité de PowerShell" sur le Windows Power Shell .

Résumé Certaines machines traitent les chemins UNC comme le grand méchant Internet, donc PowerShell les traite comme des fichiers distants. Vous pouvez soit désactiver cette fonctionnalité sur ces serveurs (UncAsIntranet = 0,), soit ajouter les ordinateurs distants à vos hôtes approuvés.

Si vous ne souhaitez en faire ni l'un ni l'autre, PowerShell v2 prend en charge un paramètre -ExecutionPolicy qui fait exactement ce que votre pseudocode souhaite. PowerShell -ExecutionPolicy Bypass -File (...).

77
LeeHolmes

Pour éviter les avertissements, vous pouvez: 

Set-ExecutionPolicy bypass
41
Alfredo Jiménez

Si vous rencontrez cette erreur à partir d'un script PowerShell téléchargé, vous pouvez le débloquer de la manière suivante:

  1. Cliquez avec le bouton droit sur le fichier .ps1 en question et sélectionnez Propriétés.

  2. Cliquez Débloquer dans les propriétés du fichier.

    enter image description here

  3. Cliquez OK

37
mopsled

Attribuez simplement 1 à la variable env SEE_MASK_NOZONECHECKS 

$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
11
Jameel Grand

Essayez ceci, éditez le fichier avec:

notepad foo.ps1:Zone.Identifier

Et définissez 'ZoneId = 0'

3
Don Werve

Vous souhaitez définir la stratégie d'exécution sur votre ordinateur à l'aide de Set-ExecutionPolicy:

Set-ExecutionPolicy Unrestricted

Vous voudrez peut-être examiner les différentes stratégies d’exécution pour déterminer celle qui vous convient le mieux. Consultez le "help about_signing" pour plus d'informations.

2
zdan

J'ai créé ce script PowerShell pour débloquer tous les fichiers d'un partage sur mon serveur.

Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % {
       Unblock-File -Path $_.FullName
}
2
Peter Veg

Avez-vous téléchargé le script à partir d'Internet?

Supprimez ensuite le flux NTFS du fichier à l’aide de la commande streams.exe on de sysinternal.

cmd> streams.exe .\my.ps1

Maintenant, essayez de réexécuter le script.

1
Sung M. Kim

Rien de tout cela n'a fonctionné dans mon cas spécifique. Qu'est-ce qui a été changé en un nom NetBIOS à partir du nom de domaine complet. 

Au lieu de:
\\server.domain.net\file.ps1
utilisation:
\\server\file.ps1

L'utilisation du nom contourne la configuration "Détecter automatiquement le réseau intranet" dans IE.

Voir l'option 1 sur le blog ici: http://setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html

1
lightwing

Supposons que vous devez lancer le script ps depuis un dossier partagé.

copy \\\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1

P.S . Réduire googler)

0
Alex

C'est très simple, ouvrez votre PowerShell et écrivez la commande suivante si vous avez le nombre de fichiers ps1. ici vous devez changer le chemin avec votre chemin.

PS C:\Users> Get-ChildItem -Path "D:\downlod" -Recurse | Unblock-File
0
Sapnandu

Essayez le paramètre set-executionpolicy "Policyname" -force et la fenêtre d'avertissement ne devrait pas apparaître.

0
swapnil