Je distribue un script PowerShell à mon équipe. Le script consiste à récupérer une adresse IP du client Vsphere, à établir une connexion mstsc et à la consigner dans un fichier partagé.
Au moment où ils ont utilisé le script, ils ont appris à connaître l'adresse IP de la machine. Après cela, ils ont toujours tendance à utiliser mstsc directement au lieu d'exécuter le script PowerShell. (Comme ils utilisent mstsc, je ne suis pas en mesure de savoir s'ils utilisent fréquemment la machine virtuelle ou non.)
Ils me disent principalement que l'exécution de PowerShell n'est pas simple.
Je suis malade de leur paresse.
Existe-t-il un moyen de faire fonctionner un script PowerShell en double-cliquant sur un fichier .ps1?
powershell
powershell-2.0
Samselvaprabu
la source
la source
Réponses:
Créez un raccourci avec quelque chose comme ceci comme "Cible":
la source
-NoProfile
est également utile, car le profil peut faire toutes sortes de choses auxquelles le script ne s'attend pas.Ou si vous voulez que tous les fichiers PS1 fonctionnent comme les fichiers VBS, vous pouvez modifier le registre comme ceci:
Modifiez la valeur par défaut pour qu'elle soit quelque chose comme ça ...
Ensuite, vous pouvez simplement double-cliquer sur tous vos fichiers .PS1 comme vous le souhaitez. à mon humble avis, être en mesure de sortir de la boîte.
Je vais appeler cela "le piratage de la décastration de Powershell". LOL profiter!
la source
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -File "%1"%*
endroit où vous pouvez éventuellement inclure le fichier-ExecutionPolicy unrestricted
. Notez le changement à la fin de la commande qui permet de transmettre zéro ou plusieurs paramètres au script PowerShell. Les guillemets et l'espacement autour des signes de pourcentage doivent être exactement comme indiqué.ftype Microsoft.PowerShellScript.1=^"^%SystemRoot^%\System32\WindowsPowerShell\v1.0\powershell.exe^" -NoLogo -ExecutionPolicy Unrestricted -File ^"%1^" %*
ce qui fera la même chose.Sachez que l'une des fonctionnalités de sécurité de PowerShell est que les utilisateurs ne peuvent PAS lancer de script avec un double clic. Faites très attention si vous modifiez ce paramètre. Une alternative pourrait être de conditionner votre script. Certains éditeurs comme PrimalScript peuvent le faire. Les utilisateurs ont toujours besoin de PowerShell, mais ils peuvent ensuite double-cliquer sur l'exe. Et il semble que votre équipe ait besoin d'un peu d'éducation.
la source
Cela a fonctionné pour moi sur Windows 10 et PowerShell 5.1:
la source
Set-ExecutionPolicy
).J'ai écrit ceci il y a quelques années (exécutez-le avec les droits d'administrateur):
la source
Vous devrez modifier le registre. Tout d'abord, configurez un PSDrive pour HKEY_CLASSES_ROOT car il n'est pas configuré par défaut. La commande pour cela est:
Vous pouvez désormais parcourir et modifier les clés de registre et les valeurs dans HKEY_CLASSES_ROOT comme vous le feriez dans les lecteurs PSDrives HKCU et HKLM normaux.
Pour configurer le double-clic pour lancer directement les scripts PowerShell:
Pour configurer le double-clic pour ouvrir les scripts PowerShell dans PowerShell ISE:
Pour restaurer la valeur par défaut (définit un double-clic pour ouvrir les scripts PowerShell dans le Bloc-notes):
la source
Je conviens que la définition d'un paramètre système peut être un peu difficile, mais le raccourci nécessitant un chemin codé en dur n'est pas idéal. Un fichier chauve-souris résout bien le problème
RunMyPowershellScript.bat
Ce fichier de commandes peut maintenant être double-cliqué sur, des raccourcis peuvent être facilement créés vers le fichier de commandes et le script peut être déployé dans n'importe quel dossier.
la source
Commandes PowerShell simples pour définir cela dans le registre;
la source
ExecutionPolicy RemoteSigned
sorte qu'un script aléatoire téléchargé à partir du réseau / Internet (avec les métadonnées indiquant qu'il n'a pas été créé localement) ne s'exécutera pas à partir d'un double clic, mais tout fichier que vous avez créé par copie et coller du code dans un fichier .ps1 s'exécutera car ces métadonnées ne lui sont pas associées.Rétablissez la valeur si vous souhaitez à nouveau utiliser le Bloc-notes par défaut.
la source
Vous pouvez définir l'association de
ps1
fichiers par défaut des fichiers surpowershell.exe
ce qui vous permettra d'exécuter un script PowerShell en double-cliquant dessus.Sous Windows 10,
ps1
fichierOpen with
Choose another app
More apps
Look for another app on this PC
.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
.Cela changera l'association des
ps1
fichiers et les fichiers s'exécuteront en double-cliquant dessus. Vous pouvez le modifier à son comportement par défaut en définissantnotepad.exe
l'application par défaut.La source
la source
mettre un simple fichier .cmd dans mon sous-dossier avec mon fichier .ps1 avec le même nom, ainsi, par exemple, un script nommé "foobar" aurait "foobar.ps1" et "foobar.cmd". Donc, pour exécuter le .ps1, tout ce que j'ai à faire est de cliquer sur le fichier .cmd de l'explorateur ou d'exécuter le .cmd à partir d'une invite de commande. J'utilise le même nom de base car le fichier .cmd recherchera automatiquement le .ps1 en utilisant son propre nom.
Le pushd / popd vous permet de lancer le fichier .cmd à partir d'une invite de commande sans avoir à passer dans le répertoire spécifique où se trouvent les scripts. Il passera au répertoire du script puis, une fois terminé, reviendra au répertoire d'origine.
Vous pouvez également désactiver la pause si vous souhaitez que la fenêtre de commande disparaisse à la fin du script.
Si mon script .ps1 a des paramètres, je les invite avec des invites d'interface graphique à l'aide de formulaires .NET, mais je rends également les scripts suffisamment flexibles pour accepter des paramètres si je veux les transmettre à la place. De cette façon, je peux simplement double-cliquer dessus à partir de l'Explorateur et ne pas avoir à connaître les détails des paramètres car il me demandera ce dont j'ai besoin, avec des zones de liste ou d'autres formulaires.
la source
Ceci est basé sur la réponse de KoZm0kNoT. Je l'ai modifié pour qu'il fonctionne sur plusieurs lecteurs.
Les deux pushd / popds sont nécessaires au cas où le cwd de l'utilisateur est sur un lecteur différent. Sans l'ensemble externe, le cwd sur le lecteur avec le script sera perdu.
la source
C'est ce que j'utilise pour que les scripts s'exécutent en tant qu'administrateur par défaut:
Vous devrez coller cela dans regedit comme valeur par défaut pour:
Ou voici un script qui le fera pour vous:
la source
Si vous êtes familiarisé avec l'administration Windows avancée, vous pouvez utiliser ce package ADM (les instructions sont incluses sur cette page) et autoriser l'exécution de scripts PowerShell après un double-clic via ce modèle et l'objet de stratégie de groupe local. Après cela, vous pouvez simplement changer le programme par défaut associé au type de fichier .ps1 en
powershell.exe
(utilisez la recherche, il est assez caché) et vous êtes prêt à exécuter des scripts PowerShell avec un double-clic.Sinon, je recommanderais de m'en tenir à d'autres suggestions car vous pouvez gâcher tout le système avec ces outils d'administration.
Je pense que les paramètres par défaut sont trop stricts. Si quelqu'un parvient à mettre du code malveillant sur votre ordinateur, il / elle est également capable de contourner cette restriction (enveloppez-le dans un fichier .cmd ou .exe, ou tournez avec un raccourci) et tout ce qu'il accomplit à la fin est juste d'empêcher vous de manière simple d'exécuter le script que vous avez écrit.
la source
Vous pouvez utiliser la fonctionnalité Windows «SendTo» pour faciliter l'exécution des scripts PS1. En utilisant cette méthode, vous pouvez faire un clic droit sur un script PS1 et l'exécuter. Cela ne répond pas exactement à la question du PO, mais c'est proche. J'espère que cela sera utile aux autres. BTW .. cela est utile pour une variété d'autres tâches.
la source
J'ai utilisé ceci (besoin de l'exécuter une seule fois); assurez-vous également que vous avez le droit d'exécuter:
de PowerShell avec des droits élevés:
puis à partir d'un fichier chauve-souris:
et voila; un double-clic sur un * .ps1 l'exécutera.
la source
The term '%1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
assoc
.Dans Windows 10, vous pouvez également supprimer le remplacement de l'explorateur Windows pour l'association d'extension de fichier:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
en plus de
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command
changement mentionné dans d'autres réponses.Voir https://stackoverflow.com/a/2697804/1360907
la source
J'ai essayé les réponses les plus élevées à cette question, mais j'ai rencontré des messages d'erreur. Ensuite, j'ai trouvé la réponse ici:
PowerShell indique que «l'exécution des scripts est désactivée sur ce système».
Ce qui a bien fonctionné pour moi, c'est d'utiliser cette solution:
Vous pouvez le coller dans un fichier .bat et double-cliquer dessus.
la source
Depuis http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily :
Définir la valeur par défaut du
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
à0
la source