verb the noun name list powershell object format output

the - Formatear un Objeto como una Lista que se asemeja



powershell command is in verb noun format (1)

Estoy tratando de dar salida a los objetos como tales:

Tubería de la variable que contiene los objetos a través de Format-List produce líneas vacías que crean problemas. No puedo eliminar las líneas vacías por algún motivo cuando uso $obj = $obj | ? {$_} $obj = $obj | ? {$_}

Espero que la variable que contiene los objetos contenga el conteo correcto de objetos.

Es bastante interesante cuando ejecuto $Host primero (que tiene el formato que estoy buscando) y luego ejecuto la variable $obj , luego obtengo los resultados que estoy buscando.

Cualquier ayuda es muy apreciada.

Aquí está el código:

$String = @" FileName: O:/iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiii.txt :`$DATA 9 SummaryInformation 128 {4c8cc155-6c1e-11d1-8e41-00c04fb9386d} 0 FileName: O:/ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss sssssssssssssss.txt :`$DATA 9 SummaryInformation 128 {4c8cc155-6c1e-11d1-8e41-00c04fb9386d} 0 FileName: O:/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt :`$DATA 0 Lzip 7 "@ [regex]$pattern1 = ''(?s)/s+FileName:/s+(?<FullName>.*?)/s+:/$DATA'' $Match1 = $String | Select-String -Pattern $pattern1 -AllMatches | % { $_.Matches } [regex]$pattern2 = ''(?sm)(?:(?<Stream>^:/$DATA.*?)/s+FileName|(?<Stream>^:.*))'' $Match2 = $String | Select-String -Pattern $pattern2 -AllMatches | % { $_.Matches } $obj = 0..($Match1.Count -1) | % { New-Object -TypeName PsObject -Property @{ FullName = $Match1[$_].Groups[''FullName''].Value Streams = $Match2[$_].Groups[''Stream''].Value } } $obj

Editar: Aquí está la salida que obtengo incluso al eliminar saltos de línea como se sugiere:

FullName -------- O:/iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii... O:/ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss... O:/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt


No elimines los saltos de línea de los nombres de archivos que analizaste en la cadena. Es muy probable que la salida de su lista no se ajuste de la manera que desee.

Cambia esto:

$obj = 0..($Match1.Count -1) | % { New-Object -TypeName PsObject -Property @{ FullName = $Match1[$_].Groups[''FullName''].Value Streams = $Match2[$_].Groups[''Stream''].Value } }

a esto:

$obj = 0..($Match1.Count -1) | % { New-Object -TypeName PsObject -Property @{ FullName = $Match1[$_].Groups[''FullName''].Value -replace ''[/r/n]+'' Streams = $Match2[$_].Groups[''Stream''].Value } }

y el problema debería desaparecer