क्या पाइप जैसी कोई चीज है या मैं इस कमांड को एक लाइन में चलाने के लिए विंडोज ओएस पर उपयोग कर सकता हूं?
दोनों cmd.exeऔर पॉवरशेल एक कमांड से दूसरे में पाइप सपोर्ट करते हैं। PowerShell में कुछ ऐसा है (यह कमांड लाइन पर एक सिंगल लाइन पर होना चाहिए, या स्क्रिप्ट में नई सुर्खियों से बचने के लिए `का उपयोग करें:
netstat -ano
| select -skip 4
| % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}}
| ? {$_.Fields[1] -match '15120$'}
| % {taskkill /F /PID $_.Fields[4] }
कहाँ पे:
Select -skip 4पहले चार हेडर लाइनों को छोड़ देता है। ( SQL का उपयोग ऑब्जेक्ट्स की परियोजनाओं की तरह SQL SELECT करने के Selectलिए कम है Select-Object।
%वह छोटा है Foreach-Objectजिसके $_लिए पाइपलाइन में प्रत्येक वस्तु ( ) पर एक स्क्रिप्ट ब्लॉक करता है और स्क्रिप्ट ब्लॉक के परिणामों को पाइपलाइन में आउटपुट करता है। यहाँ यह पहली बार इनपुट को फ़ील्ड के एक सरणी में तोड़ रहा है और फिर दो गुणों Originalके साथ एक ताज़ी वस्तु बना रहा है जिसमें से स्ट्रिंग netstatऔर Fieldsअभी बनाया गया सरणी है।
?Where-Objectएक स्क्रिप्ट ब्लॉक के परिणाम के आधार पर फिल्टर के लिए कम है । यहां दूसरे क्षेत्र के अंत में एक रेगेक्स से मेल खाते हैं (सभी पॉवरशेल कंटेनर एक शून्य आधारित)।
(सभी अंतिम तत्व को छोड़कर परीक्षण किया गया: मैं हत्या की प्रक्रिया शुरू नहीं करना चाहता हूं :-))।
व्यवहार में, मैं इसे सरल करूँगा, जैसे। पहले 0 या पीआईडी से लौटना foreach(जिसे हेडर को अनदेखा करने के लिए डिज़ाइन किया जाएगा) और कॉल करने से पहले शून्य पर फ़िल्टर करें taskkill। यह PowerShell को जाने बिना टाइप करने के लिए तेज लेकिन कठिन होगा।
findstr(Windowsgrep) पर एक नज़र है । उदाहरण के लिएnetstat -a -o -n | findstr "LISTENING" | findstr ":135":। हो सकता है कि यह आपको एक कदम करीब हो;)