आप चलने को नियंत्रित करने और अपनी पावरशेल स्क्रिप्ट में सभी गतिविधियों को ट्रैक करने के लिए साधारण टेक्स्ट लॉग फ़ाइलों का उपयोग कर सकते हैं। त्रुटियों को डीबग करने या स्क्रिप्ट क्रियाओं का ऑडिट करते समय यह उपयोगी होता है। इस लेख में, हम टेक्स्ट लॉग फ़ाइलों में आउटपुट लिखकर पावरशेल स्क्रिप्ट में लॉगिंग का उपयोग करने के कुछ तरीके दिखाएंगे।
सरलतम स्थिति में, यदि आप किसी सूचना संदेश का आउटपुट या पावरशेल कमांड परिणाम को टेक्स्ट लॉग फ़ाइल में लिखना चाहते हैं, तो आप पीएस आउटपुट को टेक्स्ट फ़ाइल में रीडायरेक्ट करने के लिए निम्न स्वरूपों में से एक का उपयोग कर सकते हैं:
Write-Output "Files are successfully created in $env:computername" >> C:\PS\Logs\TestLog.txt
Add-Content -Path C:\PS\Logs\TestLog.txt -Value "Files are successfully created in $env:computername"
"Files are successfully created in $env:computername" | Out-File -FilePath C:\PS\Logs\TestLog.txt –Append
सभी मामलों में, कमांड आपके द्वारा निर्दिष्ट टेक्स्ट के साथ एक txt फ़ाइल में एक नई लाइन जोड़ते हैं।
यदि आप हर बार लॉग फ़ाइल की सामग्री को अधिलेखित करना चाहते हैं, तोSet-Content
. का उपयोग करें सीएमडीलेट।
इस पद्धति का मुख्य दोष यह है कि आप यह पता नहीं लगा सकते हैं कि लॉग में एक प्रविष्टि कब लिखी गई थी (एक घटना हुई)। आप लॉग फ़ाइल में वर्तमान टाइमस्टैम्प जोड़ सकते हैं। यह उस समय की पहचान करने में मदद करेगा जब स्क्रिप्ट चलाई गई थी और एक विशिष्ट घटना हुई थी।
इसे और अधिक सुविधाजनक बनाने के लिए, आप अपनी पावरशेल स्क्रिप्ट में एक अलग फ़ंक्शन बना सकते हैं जो इसे प्राप्त होने वाले डेटा को लॉग फ़ाइल में लिखेगा और प्रत्येक ईवेंट के लिए टाइमस्टैम्प जोड़ देगा।
आप नीचे दिखाए अनुसार एक फ़ंक्शन बना सकते हैं:
$Logfile = "C:\PS\Logs\proc_$env:computername.log"
function WriteLog
{
Param ([string]$LogString)
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
$LogMessage = "$Stamp $LogString"
Add-content $LogFile -value $LogMessage
}
फिर राइटलॉग . को कॉल करें यदि आप कुछ लॉग करना चाहते हैं तो कार्य करें।
WriteLog "The script is run"
WriteLog "Calculating…."
Start-Sleep 20
WriteLog "The script is successfully executed"
अब आप लॉग फ़ाइल में प्रत्येक प्रविष्टि का समय देख सकते हैं।
आप
Write-Host
. को बदल सकते हैं LogWrite
के साथ कॉल करता है आपकी लिपि में वाले। पावरशेल में पीएस कंसोल में दिखाए गए सभी कमांड और आउटपुट को टेक्स्ट लॉग फ़ाइल में सहेजने के लिए एक अंतर्निहित ट्रांसक्रिप्ट सुविधा है।
अपने वर्तमान पावरशेल सत्र को लॉग करने के लिए, प्रारंभ-प्रतिलेख cmdlet का उपयोग किया जाता है।
कमांड चलाने के बाद, एक संदेश दिखाई देता है जो फ़ाइल को दिखाता है कि सभी कमांड का आउटपुट लॉग इन है। डिफ़ॉल्ट रूप से, लॉग फ़ाइल वर्तमान उपयोगकर्ता प्रोफ़ाइल में स्थित होती है:
Transcript started, output file is C:\Users\user\Documents\PowerShell_transcript.DESKTOP-P2FHTKQ.+IzDgZiN.20210908163729.txtहै आप टेक्स्ट फ़ाइल का पथ निम्नानुसार निर्दिष्ट कर सकते हैं:
Start-Transcript -Append C:\PS\Logs\PSScriptLog.txt
–जोड़ें विकल्प इंगित करता है कि फ़ाइल के अंत में नए सत्र लॉग किए जाएंगे (इसे अधिलेखित किए बिना)।
कुछ पॉवरशेल कमांड चलाएँ जो परिणामों को कंसोल पर आउटपुट करते हैं। उदाहरण के लिए, चल रही प्रक्रियाओं, सेवाओं और AD प्रतिकृति स्थिति की सूची प्रदर्शित करते हैं:
Get-Process| where-object {$_.WorkingSet -GT 500000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
Get-Service | Where-Object {$_.status -eq 'Running'}
Get-ADReplicationFailure -Target mun-dc01
वर्तमान पावरशेल सत्र के लिए लॉगिंग रोकें:
Stop-Transcript
फिर प्रतिलेख लॉग फ़ाइल खोलें।
जैसा कि आप देख सकते हैं, लॉग कंसोल और सभी आउटपुट में चलाए गए पावरशेल कमांड के पूरे इतिहास को दिखाता है।
सभी त्रुटियों और चेतावनियों को भी लॉग किया जाता है, और जटिल पावरशेल स्क्रिप्ट को डीबग करते समय यह बेहद सुविधाजनक होता है।
आप Start-Transcript
का उपयोग कर सकते हैं और Stop-Transcript
सभी क्रियाओं और आउटपुट को मूल रूप से लॉग करने के लिए अपनी PowerShell स्क्रिप्ट में cmdlets।