Question
scripts et cmdlets : différences
- bamade
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 15 ans 1 mois #8859
par bamade
scripts et cmdlets : différences a été créé par bamade
encore une demande de vraiment débutant (désolé)
pour comprendre ma question un petit rappel de ce qui se passe dans les shells UNIX: on peut créer un script \"truc\", le fichier une fois mis dans un PATH particulier on a une commande \"truc\" qui est accessible.
Bon sous powershell les choses on l'air différentes:
- certes je peux donner le nom du fichier de script mais c'est pas l'idée de ce que je cherche
- certes quand je serais ceinture orange je pourrais m'interesser à l'importation de modules (ça a l'air vraiment bien)
Donc pour l'intant supposons que j'ai un simple script \"Machin.ps1\" et que je veuille (suite à quelque manoeuvre astucieuse dans mon profile que vous allez m'indiquer) pouvoir être capable de passer une commande \"Machin arg1 arg2\"...
C'est surement un truc simplissime ... que je n'ai pas su trouver en lisant les tutoriaux
(honte à moi!)
d'ailleurs un point de terminologie : le terme \"cmdlet\" est-il uniquement réservé aux codes qui \"emballent\" du .NET ou peut-on l'utiliser pour des scripts ps?
merci
pour comprendre ma question un petit rappel de ce qui se passe dans les shells UNIX: on peut créer un script \"truc\", le fichier une fois mis dans un PATH particulier on a une commande \"truc\" qui est accessible.
Bon sous powershell les choses on l'air différentes:
- certes je peux donner le nom du fichier de script mais c'est pas l'idée de ce que je cherche
- certes quand je serais ceinture orange je pourrais m'interesser à l'importation de modules (ça a l'air vraiment bien)
Donc pour l'intant supposons que j'ai un simple script \"Machin.ps1\" et que je veuille (suite à quelque manoeuvre astucieuse dans mon profile que vous allez m'indiquer) pouvoir être capable de passer une commande \"Machin arg1 arg2\"...
C'est surement un truc simplissime ... que je n'ai pas su trouver en lisant les tutoriaux
d'ailleurs un point de terminologie : le terme \"cmdlet\" est-il uniquement réservé aux codes qui \"emballent\" du .NET ou peut-on l'utiliser pour des scripts ps?
merci
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8860
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:scripts et cmdlets : différences
Ca marche comme sous Unix (à une légère subtilité près) :
1. Tu sauvegardes ton script en machin.ps1 dans un répertoire connu de ta variable PATH
2. Tu appelles ton script par son petit nom :
[code:1]
PS> machin $arg1 $arg2 ...
[/code:1]
La seule petite subtilité, c'est dans le cas où tu veux exécuter un script qui est dans ton répertoire en cours. Par défaut, Unix (comme cmd.exe sous Windows) va chercher le script dans le répertoire en cours avant de parcourir les répertoires du PATH. PowerShell ne le fait pas, il faut donc lui préciser l'emplacement explicitement :
[code:1]
# si machin.ps1 est dans le répertoire en cours :
PS> ./machin ...
[/code:1]
Sinon, pour ce qui est de la différence entre cmdlets et scripts, ça dépend de ce que tu entends par différence.
Avec PS 2.0 tu peux ajouter à tes scripts de très nombreuses fonctionnalités qui étaient réservées aux cmdlets dans la 1.0.
Mais si tu cherches les commandes de type \"cmdlet\" (get-command -commandtype cmdlet), tu n'auras bien que les cmdlets elles-mêmes, pas les scripts.
1. Tu sauvegardes ton script en machin.ps1 dans un répertoire connu de ta variable PATH
2. Tu appelles ton script par son petit nom :
[code:1]
PS> machin $arg1 $arg2 ...
[/code:1]
La seule petite subtilité, c'est dans le cas où tu veux exécuter un script qui est dans ton répertoire en cours. Par défaut, Unix (comme cmd.exe sous Windows) va chercher le script dans le répertoire en cours avant de parcourir les répertoires du PATH. PowerShell ne le fait pas, il faut donc lui préciser l'emplacement explicitement :
[code:1]
# si machin.ps1 est dans le répertoire en cours :
PS> ./machin ...
[/code:1]
Sinon, pour ce qui est de la différence entre cmdlets et scripts, ça dépend de ce que tu entends par différence.
Avec PS 2.0 tu peux ajouter à tes scripts de très nombreuses fonctionnalités qui étaient réservées aux cmdlets dans la 1.0.
Mais si tu cherches les commandes de type \"cmdlet\" (get-command -commandtype cmdlet), tu n'auras bien que les cmdlets elles-mêmes, pas les scripts.
Connexion ou Créer un compte pour participer à la conversation.
- bamade
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 15 ans 1 mois #8863
par bamade
Réponse de bamade sur le sujet Re:scripts et cmdlets : différences
il doit y avoir un détail qui m'échappe:
j'ai posé la question parceque j'ai rajouté dans mon profile:
$env:path+=\";D:\Power-scripts\"
(lire $env deuxpoints p ath) comment dégager ces emoticons !)
ensuite
$env:path
me donne une valeur correcte mais les scripts dans ce répertoire ne sont pas trouvés
(idem pour les scripts dans mes documents\\WindowsPowershell !)
CORRECTIF: ça ne marche pas sous powershell ISE mais ça marche sous PowerGUI .... allez savoir pourquoi!<br><br>Message édité par: berber, à: 14/02/11 12:25
j'ai posé la question parceque j'ai rajouté dans mon profile:
$env:path+=\";D:\Power-scripts\"
(lire $env deuxpoints p ath) comment dégager ces emoticons !)
ensuite
$env:path
me donne une valeur correcte mais les scripts dans ce répertoire ne sont pas trouvés
(idem pour les scripts dans mes documents\\WindowsPowershell !)
CORRECTIF: ça ne marche pas sous powershell ISE mais ça marche sous PowerGUI .... allez savoir pourquoi!<br><br>Message édité par: berber, à: 14/02/11 12:25
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8865
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:scripts et cmdlets : différences
Curieux, ça marche nickel chez moi dans ISE. Tu es sûr que la session en cours sous ISE a un PATH à jour ?
Si tu tapes le nom de la variable dans ISE, elle affiche bien la liste complète y compris le répertoire que tu as ajouté ?
Si tu tapes le nom de la variable dans ISE, elle affiche bien la liste complète y compris le répertoire que tu as ajouté ?
Connexion ou Créer un compte pour participer à la conversation.
- bamade
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 15 ans 1 mois #8866
par bamade
Réponse de bamade sur le sujet Re:scripts et cmdlets : différences
janel écrit:
oui! j'ai bien testé (plusieurs fois) et path est correct dans ISE! mais ISE ne trouve pas les commandes qui y sont! (c'est pour ça que j'ai posé la question initiale)Curieux, ça marche nickel chez moi dans ISE. Tu es sûr que la session en cours sous ISE a un PATH à jour ?
Si tu tapes le nom de la variable dans ISE, elle affiche bien la liste complète y compris le répertoire que tu as ajouté ?
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8867
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:scripts et cmdlets : différences
Bizarre autant qu'étrange...
Comme ça pour voir, tu pourrais taper les commandes suivantes dans ton ISE :
[code:1]
gcm -commandtype externalscript | select @{n=\"Path\"; e={split-path $_.definition}} | group path -noelement | ft -a
[/code:1]
Ca devrait te donner la liste des répertoires qui contiennent des scripts reconnus par PowerShell (avec pour chaque répertoire le nombre de scripts qu'il contient).
Si tu as des scripts dans le répertoire que tu as ajouté à ton PATH, il devrait ressortir dans la liste.
Comme ça pour voir, tu pourrais taper les commandes suivantes dans ton ISE :
[code:1]
gcm -commandtype externalscript | select @{n=\"Path\"; e={split-path $_.definition}} | group path -noelement | ft -a
[/code:1]
Ca devrait te donner la liste des répertoires qui contiennent des scripts reconnus par PowerShell (avec pour chaque répertoire le nombre de scripts qu'il contient).
Si tu as des scripts dans le répertoire que tu as ajouté à ton PATH, il devrait ressortir dans la liste.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- scripts et cmdlets : différences