Il y a! Longue histoire courte, Select-Object fait la troncature ici. Voici une façon d'obtenir la première ligne non tronquée dans une sortie Select-String
$(Select-String -Path $logDir -Pattern "SRVE0242I:")[0].Line
Lorsque vous rencontrez quelque chose comme ça, vous pouvez décomposer les différentes étapes pour déterminer ce qui se passe par des choses de tuyauterie à Get-membres. Voici ce qui se passe dans le code ci-dessus:
Select-String <# args #> | Get-Member
Select-String nous donne un objet MatchInfo, qui (comme vous avez déterminé correctement) a une propriété 'Line'. Lorsqu'il est exécuté seul, Select-String crachera toutes les informations que vous recherchez et ne le tronquera pas par défaut (au moins sur la version 6.0.0-beta). Il vous donne un tableau d'objets MatchInfo s'il trouve plusieurs correspondances, donc vous devez indexer dans ce tableau si vous voulez juste le premier (comme je l'ai fait ci-dessus).
Select-String <# args #> | Select-Object Line | Get-Member
Select-Object applique par défaut de PowerShell mise en forme pour les objets qui, dans la plupart des cas, tronque votre sortie pour faciliter la visualisation. Pour les objets avec un groupe de membres (comme un objet MatchInfo), il essayera d'en faire un par ligne par défaut.
Select-String <# args #> | Select-Object Line | Out-String | Get-Member
Out-String directement traduit son entrée à une chaîne. C'est-à-dire, plutôt que d'essayer de transtyper quelque chose dans une chaîne ou de tirer une propriété de chaîne d'un objet qui lui est passé, elle change simplement ce qu'elle reçoit dans un objet. Dans ce cas, il transforme la sortie MatchInfo déjà formatée en chaîne. Rien n'arrive à la sortie sur le terminal, mais Get-Member révélera une chaîne plutôt qu'un objet MatchInfo.
Ce n'est pas directement pertinent ici, mais si vous êtes intéressé par la modification de la mise en forme par défaut, il est régi par le fichier types.ps1xml.