Charger un script powershell pour être appelées à tout moment
Je suis nouveau sur powershell et essayait d'utiliser l'exemple de script posté ici (le le script lui-même) pour calculer un fichier de hachage. Je peux le faire fonctionner à l'aide de la notation point
. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1' E:\testfile.bin
cependant je veux être en mesure de l'utiliser comme un auteur et il suffit de taper
Get-Filehash E:\testfile.bin
J'ai trouvé que je peux faire
function Get-FileHash {. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1'}
mais qui ne se comporte pas correctement, on me demande le fichier quand je ne Get-Filehash E:\testfile.bin
Que dois-je mettre dans mon script de profil à charger correctement ce script et Get-Help Get-FileHash
fonctionne correctement?
Vous devez vous connecter pour publier un commentaire.
En fait, la meilleure pratique dans cette situation est de mettre la fonction dans un module plutôt que dans un script. Aussi inquiétant que cela puisse paraître, tout cela signifie, c'est de renommer le fichier contenant à partir d'un
.ps1
extension à une.psm1
extension, puis de le stocker sous votre répertoire Documents (...\Documents\WindowsPowerShell\Modules\<Name>\<Name>.psm1
) où<Name>
est le nom de base de votre fichier.Puis de charger le module avec la commande:
Une fois chargé, vous pouvez appeler les fonctions contenues dans le module et Get-Help reconnaîtra les commandes. Entre autres choses, modules d'encapsulation si un fichier n'a pas polluer le contexte de l'espace de l'autre.
Et en passant, vous n'avez pas besoin d'écrire des applets de commande en C#; vous pouvez aussi les écrire dans PowerShell lui-même. Par exemple, prendre un coup d'oeil à mon open-source PowerShell bibliothèque qui est écrit dans le PowerShell et comprend beaucoup d'aide reconnu par
Get-Help
.Il ya beaucoup plus à savoir pour vraiment obtenir le plein bénéfice de l'utilisation de fonctions et de modules--je vous renvoie à mon article Vers le bas le Trou de Lapin-Une Étude en PowerShell Pipelines, des Fonctions et des Paramètres sur Simple-Talk.com.
Que vous pouvez faire:
Get-Help Get-Filehash
ne retourne pas le détail de l'aide que j'aurais si je n'aiGet-Help "E:\Tools\Power Shell Scripts\Get-Filehash.ps1"
Comment puis-je obtenir de l'aide à se comporter correctement en trop?Get-Help
va instancier la classe Applet de commande et appelez la méthode, donc je ne suis pas sûr si vous pouvez implémenter cette fonctionnalité dans un script. Encore une fois, je ne suis pas un PowerShell expert et ne l'utiliser qu'à l'occasion.Mettre le répertoire dans lequel votre script se trouve sur votre exécutable
PATH
(c'est à dire lePATH
variable d'environnement).BTW, votre fonction wrapper travail autour ne fonctionne pas parce que vous n'êtes pas en passant l'argument du script:
ou vous pouvez créer un alias (comme suggéré dans d'autres réponses)