Вывод становится усеченным с использованием winrm
Существует скрипт, который я запускаю, чтобы получить информацию об уровне диска, которая приведена ниже.
disk.ps1:
Get-WmiObject Win32_DiskDrive | % {
$disk = $_
$partitions = "ASSOCIATORS OF " +
"{Win32_DiskDrive.DeviceID='$($disk.DeviceID)'} " +
"WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Get-WmiObject -Query $partitions | % {
$partition = $_
$drives = "ASSOCIATORS OF " +
"{Win32_DiskPartition.DeviceID='$($partition.DeviceID)'} " +
"WHERE AssocClass = Win32_LogicalDiskToPartition"
Get-WmiObject -Query $drives | % {
New-Object -Type PSCustomObject -Property @{
Disk = $disk.SerialNumber
Letter = $_.DeviceID
}
}
}
}
когда я выполняю приведенный выше фрагмент на самой машине Windows, вывод:
Письмо диск ------ ---- H: XXX_46_0_80987_XXXXX_b2fd_47bb_bc36_aaf4f3029a00 L: XXX_46_0_80987_XXXXX_b2fd_47bb_bc36_aaf4f3029a00 Q: XXX_46_0_80987_41a13cd9_b2fd_47bb_bc36_aaf4f3029a00
Теперь я пытаюсь выполнить тот же скрипт, используя pywinrm
,
disk.py:
complete = <string which is equivalent to above script>
winrm_connector = winrm.Session('*.X.X.X', auth=('XXXX','XXXXXX.1'))
response = winrm_connector.run_ps(complete)
print response.std_out
Выполняя это, я получаю вывод как:
Письмо диск ------ ---- H: XXX_46_0_80987_XXXXX_b2fd_47bb_b... L: XXX_46_0_80987_XXXXX_b2fd_47bb_b... Q: XXX_46_0_80987_41a13cd9_b2fd_47bb_b...
Просьба пролить свет на то, усекает ли WinRM выходные данные или оболочка обрезает выходные данные.
Я думаю, что оболочка не делает этого, потому что, когда я выполняю сценарий с помощью PowerShell, я смог получить весь вывод.
1 ответ
PowerShell автоматически усекает широкие столбцы. Чтобы избежать этого, вы можете использовать авторазмер столбцы, передавая данные через Format-Table -AutoSize
в вашем коде PowerShell. Поскольку вы вызываете команду через Python, который не знает об объектах PowerShell, вы также можете преобразовать Format-Table
вывод в строку, пропустив ее через Out-String
(с большим значением длины строки).
... | Format-Table -AutoSize | Out-String -Width 4096