Question
Function Alias
- steph
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 10 mois 2 semaines - il y a 10 mois 2 semaines #34068
par steph
Function Alias a été créé par steph
Bonjour,Voila.
je voudrais creer un alias de cette commande mais la je bloque. Je veut pouvoir changer le nom du fichier a la demande.
la base:
[/code]
l'alias qui ne fonctione pas me retourne une sortie Get-Item
Je ne sais pas si c'est comme cela mais je voudrai que l'Alias file execute la commande Get-Item $FileName | Select-....
le resultat devrais ressemble a ceci
sauf que je veut entrer le nom du fichier a la demande.
Un peut comme la commande file sous Linux
Une Piste ??.
Merci
je voudrais creer un alias de cette commande mais la je bloque. Je veut pouvoir changer le nom du fichier a la demande.
la base:
[code]Get-Item .\useruid.ini | Select-Object -Property PSChildName,Mode,Name,Length,Directory,Attributes
PSChildName : useruid.ini
Mode : -a---
Name : useruid.ini
Length : 53
Directory : C:\Users\SERGIO
Attributes : Archive
l'alias qui ne fonctione pas me retourne une sortie Get-Item
function file {
param(
[String]$FileName
)
} # end function file
Set-Alias -name file -value Get-Item $FileName| Select-Object -Property PSChildName,Mode,Name,Length,Directory,Attributes | Format-List
Je ne sais pas si c'est comme cela mais je voudrai que l'Alias file execute la commande Get-Item $FileName | Select-....
le resultat devrais ressemble a ceci
sauf que je veut entrer le nom du fichier a la demande.
Un peut comme la commande file sous Linux
Une Piste ??.
Merci
Dernière édition: il y a 10 mois 2 semaines par steph.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 mois 2 semaines #34069
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Function Alias
Salut,
un alias pointe sur une fonction/cmdlet existant; on change juste son nom.
Pour le comportement que tu recherches tu peux utiliser une closure, un exemple de Bruce Payette :
Dans ton cas :
Pour un accès via une variable voir ceci :
devblogs.microsoft.com/powershell/tied-variables-in-powershell/
www.leeholmes.com/more-tied-variables-in-powershell/
Deux contraintes : c'est en C# et ne fonctionne qu'avec une variable globale.
Il y a surement d'autre manière de faire ...
un alias pointe sur une fonction/cmdlet existant; on change juste son nom.
Pour le comportement que tu recherches tu peux utiliser une closure, un exemple de Bruce Payette :
#ClosureExample.ps1 Bruce Payette
#
# Object === data + code
#
# Closure === code + data
#
#
# Function factory - returns closures that scale their argument
# by the the value of $x
#
function scale ($x)
{
$sb = {param($y) $x * $y}
$sb.GetNewClosure()
}
#
# Define a scale-by-5 scriptblock...
#
$by5 = scale 5
1..10 | foreach { & $by5 }
#
# Define an actual function
#
$function:by5 = scale 5
#
# And use it ...
by 3
#
# Fancier function - uses "advanced function" metadata...
#
function New-ScaleFunction{
param (
[parameter(Mandatory=$true)]
[string]
$functionName,
[parameter(Mandatory=$true)]
[int]
$scaleFactor
)
# "Advanced" scriptblock
$sb = {
param (
# Can read value from pipeline as well as command line...
[parameter(ValueFromPipeline=$true,Mandatory=$true)]
[int]
$valueToScale
)
process { $valueToScale * $scaleFactor }
}
# Define a scale function at the global scope...
Set-Item "function:global:$functionName" $sb.GetNewClosure()
}
New-ScaleFunction by4 4
by4 10
1..10 | by4
Dans ton cas :
#En interne la closure mémorise la variable locale $Name au sein d'un module ("caché")
function File($name)
{
$sb = {param() Get-Item $Name }
$sb.GetNewClosure()
}
#test
'Test' >'c:\temp\test.txt'
#création de la fonction qui mémorise le nom désiré
$MonFichier= File 'c:\temp\test.txt'
#On appel du code qui renvoi un objet fichier
&$MonFichier
Pour un accès via une variable voir ceci :
devblogs.microsoft.com/powershell/tied-variables-in-powershell/
www.leeholmes.com/more-tied-variables-in-powershell/
Deux contraintes : c'est en C# et ne fonctionne qu'avec une variable globale.
Il y a surement d'autre manière de faire ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.113 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Function Alias