verb - powershell print variable
Powershell Out-Printer rompe el diseƱo de la columna Format-Table (1)
Estoy tratando de usar Format-Table para imprimir algunos datos de proceso. Empecé probando la salida directamente en el shell. Algo en la línea de (Get-Process es solo un sustituto de mis datos):
Get-Process | Format-Table ProcessName, Id
El problema es que la primera columna tiene algunas celdas más grandes y necesitaba configurar un formato como este:
$tableFormat = @{Expression={$_.ProcessName}; width=70}, @{Expression={$_.Handles}};
Get-Process | Format-Table $tableFormat
En ambos casos, la salida se veía bien dentro del caparazón. Este es un ejemplo con $ tableFormat:
DeviceDisplayObjectProvider 240
dllhost 198
dwm 78
explorer 1077
explorer 599
fpassist 61
Idle 0
inetinfo 409
InetMgr 314
lsass 1132
lsm 167
mqsvc 235
msdtc 152
MsDtsSrvr 165
notepad++ 249
Opc.Ua.ComServerWrapper 526
Opc.Ua.DiscoveryServer 530
OpcEnum 85
OPCSim 204
pageant 111
powershell 489
powershell_ise 442
PresentationFontCache 151
procexp 183
PROCEXP64 373
ReportingServicesService 693
services 302
smss 30
SMSvcHost 298
SMSvcHost 151
Cuando intento imprimir la tabla a la impresora predeterminada como esta
...
Get-Process | Format-Table $tableFormat | lp
El resultado tiene columnas rotas (tomadas de una impresora de PDF, la salida real tiene el mismo aspecto):
Otras cosas que he intentado hasta ahora:
- Establezca la alineación de columnas para todas las columnas explícitamente a la izquierda
- autoSize (empeora las cosas)
Este problema podría estar relacionado con mi pregunta anterior, cuando todavía intenté formatear manualmente la tabla con pestañas. Ver: ¿Por qué Powershell Out-Printer ignora `f (página nueva) en el texto?
A primera vista, parece un problema de fuente. Puede o no serlo, pero al menos vale la pena verificarlo. En algunas fuentes, todos los caracteres tienen el mismo ancho. En otros, cada personaje puede tener un ancho único.
La interfaz de la consola a powershell normalmente usa una fuente de ancho fijo. El formato que obtiene de format-table puede suponer que todos los caracteres tienen el mismo ancho. Si imprime en una impresora con una fuente de ancho variable, obtendrá resultados como los que nos ha mostrado.
Puede verificar esto especificando de algún modo a su impresora que se debe usar una fuente de ancho fijo. "Courier" es una de esas fuentes. No puedo decirte cómo hacerlo en tu caso, porque no sé los detalles.
Si mi conjetura está en el objetivo, la especificación de una fuente de ancho fijo debería hacer que las columnas parezcan alineadas de nuevo.
Otra cosa para ver es dónde se establecen las tabulaciones.