Question
Pipeline et Get-Content (Résolu)
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 54
- Remerciements reçus 0
get-item \"c:\\" --> renvoie un object .net enrichi du PSObject
(get-item \"c:\\").GetFiles(\"boot.ini\") --> renvoi un objet .net uniquement, donc sans le PSObject et sans ses propriétés qu'utilisent souvent les cmdlet.
Et pour faire un \" xxx | gc\", il faut que l'objet xxx dispose de la propriété \"path\" (ou d'une des 2 autres).
Comme (get-item \"c:\\").GetFiles(\"boot.ini\") n'en dispose pas, on peut lui \"ajouter\" la propriété qui manque avec un select-objet et une propriété calculée (voir l'aide). En fait, select-object crée un nouvel object de type PSCustomObject. Et alors le gc marche !
(get-item \"c:\\").GetFiles(\"boot.ini\") |select-object @{Name=\"Path\";Expression={$_.fullName} } | gc
ou avec cette notation tableau qui m'échappe complètement
(get-item \"c:\\").GetFiles(\"boot.ini\")[0].fullName |select-object @{Name=\"Path\";Expression={$_} } | gc
Un dernier détail mais le chapitre \"...PSBase...PSObject\" du livre de référence met juste \"l'eau à la bouche\".
Encore merci pour vos efforts qui relève de la formation. Et de pointer l'aide en ligne, le réflexe sur venir.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
J'aurais plutot dit \"renvoie un object .net, plus précisément un PSObject enrichi\". La classe PSObject encapsule un objet .NET.alors si j'ai un peu compris :
get-item \"c:\\" --> renvoie un object .net enrichi du PSObject
noel écrit:
Tout à fait.(get-item \"c:\\").GetFiles(\"boot.ini\") --> renvoi un objet .net uniquement, donc sans le PSObject et sans ses propriétés qu'utilisent souvent les cmdlet.
Et pour faire un \" xxx | gc\", il faut que l'objet xxx dispose de la propriété \"path\" (ou d'une des 2 autres).
noel écrit:
Oui, bien qu'à mon avis l'approche soit un peu alambiquée, mais le principe est là.Comme (get-item \"c:\\").GetFiles(\"boot.ini\") n'en dispose pas, on peut lui \"ajouter\" la propriété qui manque avec un select-objet et une propriété calculée (voir l'aide). En fait, select-object crée un nouvel object de type PSCustomObject. Et alors le gc marche !
noel écrit:
La méthode GetFiles() renvoi un tableau d'instances de FileInfo: System.IO.FileInfo[].Ou avec cette notation tableau qui m'échappe complètement
Du coup l'indexation est possible :
[code:1]
PS > (get-item \"c:\\"«»).GetFiles
MemberType : Method
OverloadDefinitions : {System.IO.FileInfo[] GetFiles(String searchPattern),
[/code:1]
Visu du type tableau :
[code:1]
(get-item \"c:\\"«»).GetFiles(\"boot.ini\"«»).GetType()
(get-item \"c:\\"«»).GetFiles(\"boot.ini\"«»).Count
(get-item \"c:\\"«»).GetFiles().count
[/code:1]
Je devrais ajouter cette manière de faire dans mon tutoriel sur les objets personnalisés :
[code:1]
Select-Object @{Name=\"Path\";Expression={$_} }
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Pipeline et Get-Content (Résolu)