2017-08-31 9 views
0

実行中のスクリプトがあり、以下に示すディスクレベル情報を取得しています。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マシン自体に上記のスニペットを実行すると、出力は次のとおりです。

 
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は出力を切り捨てているか、シェルが出力を切り捨てているかどうかにいくつかの光を当てるしてください。

PowerShellを使用してスクリプトを実行すると、出力全体を取得できたため、シェルがこれを実行していないと考えています。

答えて

0

PowerShellは、ワイド列を自動的に切り捨てます。これを回避するには、PowerShellコードでFormat-Table -AutoSizeまでのデータをパイプして自動サイズの列を使用できます。 PowerShellオブジェクトについて知らないPython経由でコマンドを呼び出すので、Format-Tableの出力をOut-String(行の長さの値が大きい)にパイプすることで、出力を文字列に変換することもできます。

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

私はそれを持っていますが、フォーマットテーブルはスクリプト実行の一部である必要がありますか? –

+0

PowerShellコードなので、PowerShellコードの一部である必要があります。Pythonコードではありません。 –

+0

ok!それを試してみる –

関連する問題