Powershell एक स्ट्रिंग और एक शब्द के बाद का चयन करें


0

मेरा प्रश्न क्या चयन-स्ट्रिंग के साथ वर्चुअल नाम चुनने का एक तरीका है ? मेरे पास ये लॉग हैं जहां से मुझे समय और आभासी खाते के नाम का चयन करने की आवश्यकता है। मैं

*>   <event seq="453211" time="2019-01-24 11:01:03.639873 -0500" app="hServer 7.45" name="I_SFS_TRANSFER_FILE" desc="Virtual filesystem: transfer file.">
      <session id="44500" service="SSH" remoteAddress="00.00.00:57292" virtualAccount="xxxxxxxx" windowsAccount="Server3\Users"/>
      <channel type="session" id="1"/>
      <sfs moduleName="FlowSfsWin" mountPath="/" code="90000" desc="Transferring file ended.">*

यही मैंने अब तक कोशिश की है।

New-Item "C:\clients.log" -type file -force
$strings = "virtualAccount=","time="
Foreach($string in $strings){
Get-Content 'C:\uploads.log'| 
Select-String $string1 -AllMatches | % { $_.Matches } | % { $_.Value }  |
Add-Content "C:\clients.log"
}

वहाँ एक या अधिक virtualAccount और logfile प्रति समय क्षेत्र हैं? यदि प्रति फ़ाइल अधिक हैं: तो क्या जानकारी एक लाइन पर दिखाई गई है या आपके उदाहरण की तरह लाइन ब्रेक सहित है?
गर्ट जान क्राइजेवल्ड

और भी हैं, इसकी सिर्फ एक पंक्ति मैंने कॉपी की
जॉन ने

आपको यह दिखाना चाहिए कि आप क्या परिणाम देते हैं।
लोटपिंग्स

जवाबों:


0

यदि आपका कोड डेटा चाहता था, तो मेरा अनुमान है कि यह उस क्रम में नहीं था जैसा आप चाहते हैं। मुझे लगता है कि टाइमस्टैम्प और खाता नाम एक साथ होना चाहिए और टाइमस्टैम्प का एक अलग गुच्छा नहीं है, इसके बाद खाता नाम हैं। मैंने नीचे उदाहरण लिखा है कि एक $ myInfo ऑब्जेक्ट बनाता है जिसमें वह जानकारी है जिसे आप लॉग लाइनों से चाहते हैं। मुझे उम्मीद है कि यह आपके समाधान को लिखने में मदद करता है।

मुझे कहना है कि रेगेक्स मेरे नहीं हैं। मेरे पास उद्धरणों के बीच पाठ को कैप्चर करने का कठिन समय था। Google ने मदद की: https://stackoverflow.com/questions/13024073/regex-c-sharp-extract-text-within-double-quotes

foreach ($line in Get-Content 'C:\uploads.log') {
    $rslt = $line | Select-String -Pattern 'time=\"([^\"]*)\".*virtualAccount=\"([^\"]*)\"'
    $myinfo = [PSCustomObject]@{
        Time = $rslt.Matches.Groups[1].Value;
        Account = $rslt.Matches.Groups[2].Value
    }
    $myinfo
}

भाग्य में कोई त्रुटि नहींCannot index into a null array. At line:3 char:5 + [PSCustomObject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Cannot index into a null array. At line:3 char:5 + [PSCustomObject]@{ + ~~~~~~~~~~~~~~~~~~
जॉन ने

संभवतः लॉग की प्रत्येक पंक्ति में खोजे गए तार शामिल नहीं हैं। अगर ऐसा है तो आपको उस पर एक चेक जोड़ना चाहिए या एक कोशिश करनी चाहिए
Gert Jan Kraaijeveld

हाँ मिल गया, मुझे एक पंक्ति में सभी कॉपी करने की आवश्यकता होगी, यानी कठिन काम होगा
जॉन ने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.