2012-04-26 13 views
5

मेरे पास प्रत्येक पॉवरहेल स्क्रिप्ट के अंदर एक फ़ोरैच लूप है जिसमें प्रत्येक पुनरावृत्ति के दौरान शैल पर $ आउटपुट प्रिंट होता है। बहुत सारे आउटपुट हैं और शेल प्रदर्शित करने वाली प्रविष्टियों की संख्या सीमित है। मैं आउटपुट को टेक्स्ट फ़ाइल में निर्यात करना चाहता हूं। मुझे पता है कि कमांड लाइन में इसे कैसे किया जाए। हालांकि शक्तियों में यह कैसे संभव है?टेक्स्ट फ़ाइल में पावरहेल आउटपुट निर्यात करना

FYI करें, मैं के रूप में

powershell c:\test.ps1 c:\log.log 

उत्तर

12

तुम हमेशा उत्पादन एक exe तो (यहां तक ​​कि cmd.exe से) की तरह एक फ़ाइल रीडायरेक्ट कर सकते हैं powershell स्क्रिप्ट चलाने के लिए कमांड लाइन से एक बैच स्क्रिप्ट का उपयोग कर रहा हूँ:

powershell c:\test.ps1 > c:\test.log 

PowerShell के भीतर, आप भी दायर करने के लिए अलग-अलग आदेशों अनुप्रेषित कर सकते हैं लेकिन उन मामलों में आप शायद बजाय लॉग फ़ाइल को संलग्न इसे अधिलेखित करना चाहते जैसे:

$logFile = 'c:\temp\test.log' 
"Executing script $($MyInvocation.MyCommand.Path)" > $logFile 
foreach ($proc in Get-Process) { 
    $proc.Name >> $logFile 
} 
"Another log message here" >> $logFile 

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

यह एक उदाहरण cmd.exe

से मार डाला
C:\Temp>type test.ps1 
$OFS = ', ' 
"Output from $($MyInvocation.MyCommand.Path). Args are: $args" 

C:\Temp>powershell.exe -file test.ps1 1 2 a b > test.log 

C:\Temp>type test.log 
Setting environment for using Microsoft Visual Studio 2008 Beta2 x64 tools. 
Output from C:\Temp\test.ps1. Args are: 1, 2, a, b 
+1

तो अगर मैं powershell स्क्रिप्ट को एक बहस चल रहा है, कर सकते हैं बस का उपयोग कर के बारे में मैं करें: शक्तियां c: \ test.ps1 c: \ log.log> c: \ test.log जहां log.log तर्क है? – ssn

+0

हां, लेकिन '-फाइल' पैरामीटर का उपयोग करने का प्रयास करें उदा। 'powerhell -file c: \ test.ps1 c: \ log.log> c: \ test.log' –

+0

यदि मैं बैच फ़ाइल में फ़ाइल पैरामीटर (या फ़ाइल के बिना) का उपयोग करने का प्रयास करता हूं तो मुझे निम्न पंक्ति को कमांड में निष्पादित किया जाता है लाइन: पावरहेल -फाइल सी: \ test.ps1 c: \ log.log 1> c: \ test.log मुझे नहीं पता कि "1" वहां कैसे आता है ..... और मुझे लगता है कि पूरा पाठ स्क्रिप्ट नाम इनपुट फ़ाइल नाम के रूप में लिया जाता है और इसलिए आउटपुट की अपेक्षा नहीं की जाती है। और यह व्यवहार वही है जो मैं "-फाइल" का उपयोग करता हूं या नहीं। – ssn

4

है क्या 'टी' कमांड

C:\ipconfig | tee C:\log.txt 
+0

यही वह है जिसे मैं ढूंढ रहा था। मैं स्क्रीन और फ़ाइल दोनों को आउटपुट करना चाहता था। धन्यवाद! – Hajjat

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