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"
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 (...)
.
Pour éviter les avertissements, vous pouvez:
Set-ExecutionPolicy bypass
Si vous rencontrez cette erreur à partir d'un script PowerShell téléchargé, vous pouvez le débloquer de la manière suivante:
Cliquez avec le bouton droit sur le fichier .ps1
en question et sélectionnez Propriétés.
Cliquez Débloquer dans les propriétés du fichier.
Cliquez OK
Attribuez simplement 1 à la variable env SEE_MASK_NOZONECHECKS
$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
Essayez ceci, éditez le fichier avec:
notepad foo.ps1:Zone.Identifier
Et définissez 'ZoneId = 0'
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.
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
}
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.
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
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)
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
Essayez le paramètre set-executionpolicy "Policyname" -force et la fenêtre d'avertissement ne devrait pas apparaître.