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