2009-06-29 12 views
8

सरल (शायद बेवकूफ) सवाल। मैं पावरहेल नौसिखिया हूं और मुख्य रूप से प्रबंधित पुस्तकालयों को तुरंत चालू करने के लिए इसका उपयोग कर रहा हूं, इसलिए मुझे उनसे सदस्यों का उपयोग करने की आवश्यकता होने पर छोटे ऐप्स लिखने की ज़रूरत नहीं है। इनमें से कुछ पुस्तकालय पुराने हैं और लंबे, दर्दनाक हस्ताक्षर के साथ विधियां हैं। नई-वस्तु के साथ instantiating के बाद प्राप्त सदस्यीय का उपयोग करना, मैं अक्सर इस तरह निराशा होती परिणाम हुई:क्या पावरहेल सेमीडलेट के वर्डव्रप परिणामों का कोई तरीका है?

PS> $object | get-member MethodWithLongSignature 

TypeName: SomeLib.SomeObject 

Name      MemberType Definition 
----      ---------- ---------- 
MethodWithLongSignature Method  System.Void MethodWithLongSignature(string param1, int param2, string param3, string param4, stri.... 

वहाँ पाने सदस्यीय के परिणामों रैप करने के लिए कोई तरीका है? वैकल्पिक रूप से, क्या सदस्य बनने के लिए एक स्विच है जो परिणामों को इस तरह से तैयार करेगा जो लपेट नहीं पाएगा?

उत्तर

14

तालिका संरचनाओं में आउटपुट स्क्रीन की चौड़ाई फिट करने के लिए स्वतः स्वरूपित होते हैं, यदि आवश्यक हो तो प्रक्रिया में लंबे मूल्यों को कम करना।

परिणाम के वर्बोज़, लंबवत स्वरूपण प्राप्त करने के लिए परिणाम format-list कमांड में पाइप करें।

PS> $object | get-member MethodWithLongSignature | format-list 
+0

यही वह है। धन्यवाद! –

+0

यह क्यों काम नहीं करता 'ऑब्जेक्ट | | get-childitem env: पथ | प्रारूप सूची '? – whytheq

4

प्रारूप-तालिका में अंतिम कॉलम को लपेटने के लिए एक -प्रा स्विच है। चूंकि गेट-सदस्य के आउटपुट का अंतिम कॉलम पहले से ही काफी बड़ा है, इससे पठनीय परिणाम मिलेंगे।

एक अन्य विकल्प (लेकिन यह, लपेट नहीं करता है तो आप चौड़ाई को सांत्वना तक ही सीमित हैं) प्रारूप-वाइड है:

Get-Process | Get-Member | Format-Wide Definition -Column 1 
1

तुम भी कोशिश कर सकते हैं प्रारूप-टेबल -wrap, जैसे:

(get-process -id 3104) .startinfo.EnvironmentVariables | प्रारूप-टेबल -wrap

4

मैं कुछ एक मनमाना चौड़ाई के लिए शब्द-रैप करने की अनुमति दी है कि में बनाया नहीं पा सके, तो मैं एक ने लिखा है - वर्बोज़ थोड़ा लेकिन यहाँ यह है:

function wrapText($text, $width=80) 
{ 
    $words = $text -split "\s+" 
    $col = 0 
    foreach ($word in $words) 
    { 
     $col += $word.Length + 1 
     if ($col -gt $width) 
     { 
      Write-Host "" 
      $col = $word.Length + 1 
     } 
     Write-Host -NoNewline "$word " 
    } 
} 
+0

मुझे लगता है कि यदि आप लूप के अंदर शून्य में '$ col' को रीसेट करना चाहते हैं, हाँ? –

2

बिल्डिंग लियो के जवाब पर, मैंने word-wrap cmdlet बनाने का निर्णय लिया।

<# 
.SYNOPSIS 
wraps a string or an array of strings at the console width without breaking within a word 
.PARAMETER chunk 
a string or an array of strings 
.EXAMPLE 
word-wrap -chunk $string 
.EXAMPLE 
$string | word-wrap 
#> 
function word-wrap { 
    [CmdletBinding()] 
    Param(
     [parameter(Mandatory=1,ValueFromPipeline=1,ValueFromPipelineByPropertyName=1)] 
     [Object[]]$chunk 
    ) 
    PROCESS { 
     $Lines = @() 
     foreach ($line in $chunk) { 
      $str = '' 
      $counter = 0 
      $line -split '\s+' | %{ 
       $counter += $_.Length + 1 
       if ($counter -gt $Host.UI.RawUI.BufferSize.Width) { 
        $Lines += ,$str.trim() 
        $str = '' 
        $counter = $_.Length + 1 
       } 
       $str = "$str$_ " 
      } 
      $Lines += ,$str.trim() 
     } 
     $Lines 
    } 
} 

यह एक समारोह तर्क के रूप में एक स्ट्रिंग या तार के सरणी पारित करके दोनों काम करता है, या पाइप लाइन पर। उदाहरण:

$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 5 

word-wrap $str 
$str | word-wrap 
get-content txtfile.txt | ?{ $_ } | sort | word-wrap 

समारोह के शीर्ष पर मेटाडाटा टिप्पणी ब्लॉक get-help word-wrap कुछ उपयोगी जानकारी दिखाने देता है। पाइपलाइन cmdlets को परिभाषित करने के बारे में अधिक जानकारी के लिए See this page

0

एक विकल्प के आप 2015.

https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2015&showReviewDialog=true

यह आप सभी वी.एस. संपादक सुविधाओं देता है, शब्द-रैपिंग, डिबगिंग वी.एस. में अपने powershell स्क्रिप्ट चलाने के लिए "दृश्य स्टूडियो के लिए PowerShell उपकरण 2015" का उपयोग कर सकते विस्तार के रूप में , इंटेलिजेंस इत्यादि

संबंधित मुद्दे