2017-08-31 5 views
0

Il existe un script que j'utilise pour obtenir les informations de niveau de disque indiquées ci-dessous.La sortie est tronquée à l'aide de 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 
      } 
     } 
    } 
} 

quand je l'exercerai extrait ci-dessus sur la machine des fenêtres elle-même, la sortie est:

 
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 

Maintenant, je suis en train d'exécuter le même script en utilisant 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 

L'exécution de ce que je reçois comme sortie:

 
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... 

S'il vous plaît faire la lumière si WinRM tronque la sortie ou la coquille est tronque la sortie .

Je pense que le shell ne le fait pas parce que lorsque j'ai exécuté le script en utilisant PowerShell, j'ai été en mesure d'obtenir la sortie entière.

Répondre

0

PowerShell tronque automatiquement les colonnes larges. Pour éviter cela, vous pouvez utiliser des colonnes de taille automatique en acheminant les données via Format-Table -AutoSize dans votre code PowerShell. Puisque vous appelez la commande via Python, qui ne connaît pas les objets PowerShell, vous pouvez également convertir la sortie Format-Table en une chaîne en la faisant passer par Out-String (avec une valeur élevée pour la longueur de la ligne).

... | Format-Table -AutoSize | Out-String -Width 4096 
+0

J'ai obtenu cela .. mais la table de format doit être la partie de l'exécution du script ou à l'intérieur du script? –

+0

Il s'agit du code PowerShell, il est donc évident qu'il doit faire partie de votre code PowerShell, pas de votre code Python. –

+0

ok !. va essayer ça –