2012-02-15 18 views
14

मुझे Write-Host "Server1" जैसे कुछ आदेशों के साथ एक स्क्रिप्ट मिली है। मैं इसे फाइल में कैसे निर्यात कर सकता हूं?लिखें-होस्ट => फ़ाइल में निर्यात करें

जब मैंने script > export.txt के साथ प्रयास किया तो यह काम नहीं करता है।

+0

इसके बारे में कोई अंतिम समाधान? Get-MailboxServer C:।। \> Powershell \ script.ps1> \ export.txt अवधि 'गेट-MailboxServer' एक cmdlet के रूप में मान्यता प्राप्त नहीं है – Kiquenet

उत्तर

23

Write-host आउटपुट को केवल कंसोल पर रीडायरेक्ट करें।

आप write-output का उपयोग करें और एक फ़ाइल को अनुप्रेषित (> export.txt या out-file export.txt को पाइप)

चरम मामले जब आप पूरी तरह से एक स्क्रिप्ट से सभी उत्पादन अनुप्रेषित इस cmdlet

start-transcript 
get-help start-transcript -full 
9
को एक बार देख ले की जरूरत में कर सकते हैं

पावरशेल script > export.txtscript | Out-File -path export.txt के लिए वाक्य रचनात्मक चीनी है।

लिखें-होस्ट ऑब्जेक्ट को होस्ट भेजता है, और यह किसी ऑब्जेक्ट को वापस नहीं करता है। इसका मतलब है कि आउट-फाइल cmdlet में कोई ऑब्जेक्ट पाइप नहीं किया गया है और export.txt फ़ाइल में कुछ भी नहीं लिखा गया है। एक वर्कअराउंड (यदि आप अपनी स्क्रिप्ट को बदलना नहीं चाहते हैं) cmd कंसोल खोलना है और cmd कंसोल रीडायरेक्शन का उपयोग कर PowerShell आउटपुट को रीडायरेक्ट करना है।

C:\> powershell .\script.ps1 > .\export.txt 
+0

मैं बताने के लिए किसी Exchange आदेश जो है है कि वहाँ भूल गया , फ़ंक्शन, ऑपरेट करने योग्य प्रोग्राम, या स्क्रिप्ट फ़ाइल। शब्द सत्यापित करें और पुनः प्रयास करें। धन्यवाद – expirat001

+0

अपनी स्क्रिप्ट की शुरुआत में अपने एक्सचेंज रिमोट रनस्पेस कॉन्फ़िगरेशन से कनेक्ट करने का प्रयास करें। '$ सत्र = नया-PSSession -ConfigurationName माइक्रोसॉफ्ट। एक्सचेंज -कनेक्शनउरी http: // $ computername/powerhell; आयात-पिसेशन $ सत्र'। यदि आपको ऐसा करने में समस्याएं हैं, तो एक नया प्रश्न खोलने पर विचार करें क्योंकि यह समस्या प्रारंभिक समस्या से संबंधित नहीं है। –

6

अलग दृष्टिकोण की उपयोगिता काफी हद तक आपके उपयोग के मामले के आधार पर किया जाना है, "सही" तरीका यह है जा रहा है निश्चित रूप से, लेकिन ...

, मेरा मानना ​​है, तो आप नियंत्रण है, तो स्क्रिप्ट्स (और यह वही है जो मैं आमतौर पर करता हूं, हालांकि स्वीकार्य रूप से मैं आज शॉर्टकट ढूंढ रहा था), "अधिभार" Write-Host, तो बोलने के लिए, और फिर Write-Host पर जो कुछ भी भेजा गया है उसे भेजें नया समारोह

वैध पावरशेल क्रियाओं के साथ रहने के लिए, मैं अपना Write-Feedback पर कॉल करता हूं।

function Write-Feedback() 
{ 
    param 
    (
     [Parameter(Position=0,ValueFromPipeline=$true)] 
     [string]$msg, 
     [string]$BackgroundColor = "Yellow", 
     [string]$ForegroundColor = "Black" 
    ) 

    Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg; 
} 

तो अब आप एक समारोह है कि अनिवार्य रूप से Write-Host के समान संचालित है, लेकिन आप आसानी से जहां उत्पादन हो जाता है नियंत्रित कर सकते हैं। यदि आपको किसी फ़ाइल में लिखने की आवश्यकता है, तो आप Write-Feedback संपादित कर सकते हैं ताकि इसकी सभी कॉल अब जो भी हो, कर सकें।

आप बस लाइन Write-Output के लिए, आप पाइपलाइन नीचे कुछ और कर रहे हैं के आधार पर बदल सकता है ...

... 
Write-Output $msg; 

आप एक ही फाइल है कि आप पाइप रहे हैं करने के लिए उत्पादन भेज सकता है करने के लिए आदेश के बाकी है, लेकिन Write-Feedback समारोह के भीतर, यहां तक ​​कि राइट-होस्ट भी ध्यान में रखते हुए:

function Write-Feedback() 
{ 
    param 
    (
     [Parameter(Position=0,ValueFromPipeline=$true)] 
     [string]$msg, 
     [string]$BackgroundColor = "Yellow", 
     [string]$ForegroundColor = "Black" 
    ) 

    Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg; 
    $msg | Out-File "./export.txt" -Append; # <<< or add a param to location 
} 

या यदि आप कुछ बाहरी कारकों जहां Write-Feedback सामग्री को एक फ़ाइल में पहुंचाया जा नहीं करना चाहती है, आप एक नया ओ जोड़ सकते हैं पेंशनल पैरामीटर जो पूछता है कि प्रत्येक विशिष्ट Write-Feedback के साथ क्या करना है, आपको switch से कॉल करें और Write-Host पर Write-Output, आदि पर फ़ाइल को भेजें - डिफ़ॉल्ट रूप से जो आप चाहते हैं उसे बदलना, और स्पष्ट रूप से switch नए से बंद करना पैरामीटर जहां यह स्पष्ट रूप से सेट है।

आदि, आदिPowerShell में आउटपुट के लिए केंद्रीकृत क्लीयरिंगहाउस में आपकी सभी कॉलों को रूट करना बहुत आसान है। फिर जब आप अपना मन बदलते हैं, तो यह एक बड़ी खोज और प्रतिस्थापन नहीं है - और वापस - कार्य को प्रतिस्थापित करें।

मुझे लगता है कि केवल दर्द यहाँ अगर आप, पाइप लाइन नीचे बातें भेजने के लिए नहीं करना चाहता था इसलिए Write-Output बाहर है होगा, लेकिन यह सुनिश्चित करने के फ़ाइल Write-Feedback को पत्र लिखा है कि तुम क्या में निर्दिष्ट किया है के रूप में ही था चाहता था > export.txt आपके उदाहरण से प्रत्येक बार Write-Feedback संपादित किए बिना। मुझे यकीन नहीं है कि ऐसा करने का कोई आसान तरीका है या नहीं।

लेकिन चूंकि आप पहले से ही अपने "पाइप चरण" से एक कदम हटा दिए जाएंगे, शायद यह वैध उपयोग केस नहीं है।

वैसे भी, नीचे की रेखा Write-Host अधिभारित करना है और जो भी आप एक स्थान पर संपादित करके करना चाहते हैं।

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