मैं where
कमांड के Powershell कमांड के बराबर के बारे में कुछ भी नहीं जान सकता cmd
। क्या मुझे इसे बस से कॉल करना चाहिए cmd
या पीएस में कुछ और सुरुचिपूर्ण है?
मैं where
कमांड के Powershell कमांड के बराबर के बारे में कुछ भी नहीं जान सकता cmd
। क्या मुझे इसे बस से कॉल करना चाहिए cmd
या पीएस में कुछ और सुरुचिपूर्ण है?
जवाबों:
Get-Command
कमांडलेट का उपयोग करें इसे निष्पादन योग्य का नाम दें। यह निष्पादन योग्य के लिए पूरी तरह से हल किए गए पथ के साथ लौटे ऑब्जेक्ट (प्रकार ApplicationInfo ) की पथ संपत्ति को पॉप्युलेट करता है ।
# ~> (get-command notepad.exe).Path
C:\WINDOWS\system32\notepad.exe
gcm
पूरे Get-Command
शब्द टाइप करने के बजाय कमांड को संक्षिप्त कर सकते हैं
gcm notepad
मेरे लिए एकदम सही काम कर रहा है जब मैं सिर्फ यह देखना चाहता हूं कि मैं कौन सी फाइल बुला रहा हूं।
यदि आप सीएमडी को लागू किए बिना बस एक ही कार्यक्षमता देख रहे हैं, तो आप इसे तब तक कॉल कर सकते हैं where.exe
, जब तक कि C:\Windows\System32
यह आपके रास्ते में न हो। कमांड where
(.exe के बिना) को अलियास किया गया है Where-Object
, इसलिए केवल पूरा नाम निर्दिष्ट करें।
PS C:\Users\alec> where
cmdlet Where-Object at command pipeline position 1
...
PS C:\Users\alec> where.exe
The syntax of this command is:
WHERE [/R dir] [/Q] [/F] [/T] pattern...
Get-ChildItem C:\SomeDir -Recurse *.dll
यह बहुत ज्यादा है कि पुराना कहाँ है। exe ... क्या अधिक विशिष्ट कार्यक्षमता थी जो आप नकल करने की कोशिश कर रहे हैं?
संपादित करें: यहोशू की टिप्पणी के जवाब में ... ओह, आप अपने पाथ पर्यावरण चर भी खोजना चाहते हैं? कोई दिक्कत नहीं है।
Foreach($_ In $Env:Path -Split ';')
{
Get-ChildItem $_ -Recurse *.dll
}
oh, you want to search your PATH environment variables too?
उम, हाँ, यह पूरी बात है where
, अन्यथा आप बस उपयोग कर सकते हैं dir
। डेर। :-P
where
एक अंतर्निहित cmd
कमांड नहीं है। यह एक स्वसंपूर्ण अनुप्रयोग है ( where.exe
), इसलिए सख्ती से बोलने वाले PowerShell को "प्रतिस्थापन की आवश्यकता नहीं है"।
तो क्यों where
PowerShell में काम नहीं करता है ? यह कुछ भी नहीं करने के लिए लगता है:
PS C:\> where where
PS C:\>
डिफ़ॉल्ट रूप where
से एक अंतर्निहित पीएस cmdlet में अलियास किया जाता है।
PS C:\> get-help where
NAME
Where-Object
...
ALIASES
where
?
खैर, यह जानना बहुत अच्छा है, लेकिन क्या where-object
कॉल करने की कोशिश करने पर कॉल से बचने का कोई तरीका है where.exe
?
इसका जवाब है हाँ।
विकल्प 1
where.exe
विस्तार के साथ बुलाओ । (यह अन्य एलियासिंग और फ़ाइल-एक्सटेंशन प्राथमिकता मुद्दों के आसपास काम करने का एक आसान तरीका है।)
PS C:\> where.exe where
C:\Windows\System32\where.exe
विकल्प 2
उर्फ को हटा दें।
PS C:\> Remove-Item alias:\where -Force
PS C:\> where where
C:\Windows\System32\where.exe
साइड नोट्स
zdan का उत्तरGet-Command
विकल्प के रूप में उपयोग करने का प्रस्ताव करता है। यद्यपि यह थोड़ी अधिक gcm
क्रिया है (डिफ़ॉल्ट उपनाम का उपयोग करते समय भी ), इसकी तुलना में अधिक समृद्ध कार्यक्षमता है where.exe
। यदि स्क्रिप्टिंग में उपयोग किया जाता है, तो दोनों के बीच सूक्ष्म अंतर पर ध्यान दें। जब तक आप वैकल्पिक पैरामीटर को शामिल नहीं करते हैं where.exe
, उदाहरण के लिए , सभी मैच लौटाता है, जबकि Get-Command
केवल पहला परिणाम देता है -TotalCount
।
PS C:\> where.exe notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
PS C:\> (gcm notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\> (gcm notepad -TotalCount 5).Path
C:\WINDOWS\system32\notepad.exe
C:\WINDOWS\notepad.exe
PS C:\>
और अंत में, यदि आप डिफ़ॉल्ट where
उपनाम को हटा देते हैं, तो आप इसे पुन: असाइन करने पर भी विचार कर सकते हैं जो कि एक अन्य नाम है Get-Command
। (लेकिन यह शायद संदिग्ध लाभ होगा।)
PS C:\> Set-Alias where Get-Command
PS C:\> where notepad
CommandType Name Version Source
----------- ---- ------- ------
Application notepad.exe 10.0.15... C:\WINDOWS\system32\notepad.exe
PS C:\> (where notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\>