क्या पाइप जैसी कोई चीज है या मैं इस कमांड को एक लाइन में चलाने के लिए विंडोज ओएस पर उपयोग कर सकता हूं?
दोनों 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"
:। हो सकता है कि यह आपको एक कदम करीब हो;)