我正在运行一个脚本来获取磁盘级别信息,如下所示。
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机器上执行上述代码片段时,输出为:
Letter Disk ------ ---- 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
执行此操作我得到的输出为:
Letter Disk ------ ---- 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是否截断输出或shell是否截断输出。
我认为shell没有这样做,因为当我使用PowerShell执行脚本时,我能够获得整个输出。
答案 0 :(得分:0)
PowerShell会自动截断宽列。为避免这种情况,您可以通过在PowerShell代码中通过Format-Table -AutoSize
管道传输数据来使用自动调整大小的列。由于您是通过Python调用该命令(不知道PowerShell对象),因此您可能还希望通过Format-Table
将Out-String
输出转换为字符串(具有较大的值)线长)。
... | Format-Table -AutoSize | Out-String -Width 4096