Database
 sql >> डेटाबेस >  >> RDS >> Database

क्योंकि आपको पावरशेल जानने की जरूरत है

अरे - आशा है कि आप ठीक कर रहे हैं।

मैं आपको पावरशेल के साथ आरंभ करने के लिए कुछ मिनट लेना चाहता हूं, एक तरह से जो मुझे लगता है कि मुझे दिन में सबसे अधिक पावरशेल सामग्री कैसे मिली, उससे कम भारी है। क्योंकि आपने मुझे बताया है कि आप पावरशेल के बारे में सुनते रहते हैं, और आप यह नहीं बता सकते कि इसमें कैसे जाना है।

जानने वाली पहली बात यह है कि यह स्टेरॉयड पर कमांड प्रॉम्प्ट की तरह लगता है, लेकिन कमांड प्रॉम्प्ट की तुलना में बहुत अधिक उपयोगी है। जैसे ही आप इसे खोलेंगे आप देखेंगे कि मेरा क्या मतलब है। चलो ऐसा करते हैं, लेकिन इसे 'व्यवस्थापक के रूप में चलाएं' का उपयोग करके खोलें, क्योंकि यह कुछ डेमो के लिए मदद करता है। वास्तविक जीवन में, आप इसे केवल व्यवस्थापक अधिकारों के साथ खोलेंगे यदि आपको वास्तव में आवश्यकता हो।

तो स्टार्ट बटन पर क्लिक करें और पावरशेल टाइप करना शुरू करें। मैं नहीं चाहता कि आप आईएसई (अभी तक) खोलें, बस "विंडोज पॉवरशेल" शॉर्टकट ढूंढें, और 'व्यवस्थापक के रूप में चलाएं' चुनने के लिए उस पर राइट-क्लिक करें।

अब जब यह चल रहा है, तो इसे अपने टास्कबार पर पिन करें, ताकि अगली बार आप इसे और अधिक तेज़ी से एक्सेस कर सकें। यदि आप PowerShell को अपनाने का प्रयास करने जा रहे हैं, तो आपको इसे खोलना आसान बनाना चाहिए।

वैसे भी, वह खिड़की ... तुरंत ऐसा लगता है कि आपको एक सुराग की जरूरत है कि क्या लिखना है। हाँ यह सही है। आईएसई में चीजें थोड़ी आसान हो सकती हैं, और हारून नेल्सन (@sqlvariant) ने मुझे हर बार पावरशेल में कुछ भी करने पर आईएसई का उपयोग न करने के लिए कहा है, लेकिन हम यहां ठीक रहेंगे।

आइए कुछ बुनियादी चीजें करके शुरू करें जो हम डॉस से जानते हैं। कमांड cd और dir . इसे आजमाएं:

cd ..
dir

आप देखेंगे कि आप C:\WINDOWS . तक बढ़ रहे हैं , और फिर सामग्री को सूचीबद्ध करें। यहाँ कोई आश्चर्य की बात नहीं है, यह बिल्कुल कमांड प्रॉम्प्ट की तरह है। या डॉस यदि आप काफी पुराने हैं।

पावरशेल के साथ अंतर यह है कि यह सिर्फ टेक्स्ट आउटपुट नहीं है। ये चीजें हैं वस्तुएं . और हम इसके साथ सामान कर सकते हैं। पावरशेल एक 'टाइप किया हुआ' वातावरण है। आप पहले से ही हर समय वस्तुओं से निपटते हैं, जैसे SSMS में ऑब्जेक्ट एक्सप्लोरर में। पॉवरशेल ऑब्जेक्ट्स में वे सभी चीज़ें, साथ ही .Net ऑब्जेक्ट शामिल हो सकते हैं। यहीं से पॉवरशेल को शक्ति मिलती है।

कुछ त्वरित चीजें…

  1. PowerShell कमांड क्रिया-संज्ञा जोड़े में आते हैं, जैसे Set-Location या Get-Content या Get-ChildItem . इन्हें cmdlets के रूप में जाना जाता है, इसलिए जब आप 'cmdlet' शब्द देखते हैं, तो इसका अर्थ केवल PowerShell कमांड होता है।
  2. पॉवरशेल कमांड पैरामीटर हाइफ़न का उपयोग करते हैं। जैसे:Get-ChildItem -Recurse लेकिन आप उन्हें तब तक संक्षिप्त भी कर सकते हैं जब तक कि कोई अस्पष्टता न हो। इसलिए मैं -rec का उपयोग कर सकता था -recurse . के बजाय .
  3. चर एक डॉलर के चिह्न से शुरू होते हैं ($ ) हम इस पर बाद में पहुंचेंगे।
  4. हम > का उपयोग नहीं करते हैं फ़िल्टर और परीक्षण में, हम -gt . का उपयोग करते हैं . -eq = के लिए , -ne != . के लिए /<> , -le <= . के लिए , और इसी तरह। यह निराशाजनक है, लेकिन आपको इसकी आदत हो जाएगी।
  5. संक्षिप्त रूप और उपनामों का एक समूह है। Set-Location . के लिए एक उपनाम cd है . Get-ChildItem dir . के नाम से भी जाना जाता है , और ls भी। Where-Object ? और ForEach-Object % है . जैसे-जैसे हम आगे बढ़ेंगे हम इन्हें देखेंगे।
  6. आपको लगभग हर चीज़ पर टैब-पूर्णता प्राप्त होती है, इसलिए यदि आपने Get-Chi टाइप किया है , आप टैब को हिट कर सकते हैं और विकल्पों के माध्यम से साइकिल चला सकते हैं जब तक कि आपको वह नहीं मिल जाता जो आप चाहते हैं।
  7. आप सहायता का उपयोग कर सकते हैं (जो Get-Help . के लिए एक उपनाम है ) बस उपयोग करके:help dir , और उस सहायता के निचले भाग में, आपको एक अच्छा रिमाइंडर मिलेगा कि आप help dir -examples का उपयोग कर सकते थे , और वह -online . जोड़ रहा है उस पर प्रासंगिक सहायता पृष्ठ के साथ एक वेब पेज खोला होगा (यह वास्तव में आसान है)।
  8. आप पाइप चिह्न (| . का उपयोग करके एक चीज़ के परिणामों को दूसरी चीज़ में पास कर सकते हैं ) शायद सबसे उपयोगी है gm (Get-Member . के लिए एक उपनाम ), जो आपके द्वारा पास की गई किसी भी वस्तु के लिए गुणों और विधियों (सदस्यों) को सूचीबद्ध करेगा।
  9. # लाइन पर टिप्पणी करेंगे, या <# . के बीच जाएंगे और #>

आइए इसमें से कुछ को कार्रवाई में देखें।

यहां हम कुछ दिलचस्प चीजें देख सकते हैं। यह जानकर अच्छा लगा कि हम -Exclude का उपयोग कर सकते हैं और -Include . हम इसे जल्द ही करेंगे। हम -detailed . का उपयोग करके अधिक जानकारी प्राप्त कर सकते हैं , या -examples , या -full .

आइए हमारे SQL फोल्डर को एक्सप्लोर करें। cd \p . लिखकर प्रारंभ करें और फिर <कीबोर्ड>टैब दबाएं जब तक यह आपको प्रोग्राम फाइल्स नहीं दिखाता।

अब एम दबाएं और 'माइक्रोसॉफ्ट एसक्यूएल सर्वर' खोजने के लिए फिर से टैब मारना शुरू करें। यदि आप बहुत दूर जाते हैं, तो पीछे की ओर जाने के लिए Shift-Tab दबाएं। (ओह, और अगर आपको D: . पर देखना चाहिए था , फिर cd D:\p . के साथ पुन:प्रारंभ करें - लेकिन सिद्धांत समान हैं।)

महान। आइए एंटर दबाएं और देखें कि हमने निर्देशिका बदल दी है।

लेकिन अब टाइप करते हैं:dir -rec -inc ConfigurationFile.ini

आप प्रत्येक पैरामीटर के बाद Tab को हिट कर सकते थे और उन्हें अधिक सही संस्करणों में विस्तारित होते देखा। आप Get-ChildItem का उपयोग कर सकते थे थोड़ा सख्त होना। हालांकि मुझे वास्तव में परवाह नहीं है। जब आप इसे चलाते हैं, तो आपको कुछ फ़ाइलें सूचीबद्ध दिखाई देंगी। मुझे नहीं पता कि आपको कितने मिलेंगे। प्रत्येक इंगित करता है कि आपने SQL सर्वर की स्थापना चलाई है। लेकिन एक SQL विशेषज्ञ के रूप में, आप यह जानते हैं। आप शायद यह नहीं जानते होंगे कि PowerShell उन्हें आपके लिए कितनी आसानी से सूचीबद्ध कर सकता है।

ठीक है। उम्मीद है कि हम इसके लिए कुछ उपयोग देख रहे हैं।

अब इस आउटपुट के साथ कुछ करते हैं। मैं 'इन फाइलों के साथ' कहना चाहता हूं, लेकिन चलिए डेटा की बात करते हैं और इसे फाइलों के डेटासेट के रूप में सोचते हैं।

मान लीजिए हम उन्हें गिनना चाहते हैं। मैं ForEach-Object . का उपयोग करके परिणामों के माध्यम से लूप कर सकता था (लेकिन मैं शॉर्टकट का उपयोग करूंगा % ), और मेरे द्वारा सेट किए गए वेरिएबल को बढ़ाएँ। यह लूपिंग के लिए एक सामान्य पैटर्न है - लोग पूरे कार्यक्रमों को उन घुंघराले कोष्ठकों के अंदर, बहुत सारी पंक्तियों में रखते हैं।

यह चाल है, लेकिन मुझे यकीन है कि मुझे चीजों को गिनने देने के लिए कुछ अंतर्निहित है।

ठीक है, मुझे वह आदेश कभी याद नहीं है, तो आइए उन फैंसी इंटरनेट-खोज प्रदाताओं में से एक से पूछें।

मैं इन पन्नों को खोलना भी नहीं चाहता। मैं केवल यह देखना चाहता हूं कि Measure-Object नामक एक कमांड है . आइए अपना आउटपुट उसमें डालें। पिछले आदेश पर वापस जाने के लिए 'ऊपर तीर' कुंजी दबाएं।

इसमें एक पल लगता है, और फिर खुशी से हमें बताता है कि तीन हैं।

इसमें कुछ समय लगता है क्योंकि इसे फिर से फाइलों को खोजना पड़ता है। हम उन परिणामों को कहीं स्टोर कैसे करेंगे?

अब, मैं इन चीजों को कोष्ठक कहता हूं, लेकिन अमेरिकी उन्हें कोष्ठक कहते हैं। और जिसे आप कोष्ठक कहते हैं, मैं उसे वर्गाकार कोष्ठक कहता हूँ। घुंघराले कोष्ठक भी हैं, जिन्हें आप मेरे विचार से ब्रेसिज़ कहते हैं। मैं भ्रम से बचने के लिए कोष्ठकों को 'गोल कोष्ठक' कहने का प्रयास करूँगा, लेकिन यदि मैं एक 'कोष्ठक' का उल्लेख करता हूँ, तो मेरा तात्पर्य एक कोष्ठक से है।

मैं अपना dir लपेटने जा रहा हूं गोल कोष्ठक में कमांड करें, और उसे एक चर के लिए असाइन करें।

अब मैं पाइप कर सकता हूं $configfilelist Measure-Object . में और यह अधिक प्रतिक्रियाशील होगा, क्योंकि मैंने अपने परिणाम संग्रहीत कर लिए हैं।

लेकिन क्योंकि $configfilelist फाइलों की एक सरणी है, मैं यह देखने के लिए इसकी लंबाई भी देख सकता हूं कि तीन आइटम हैं। यह ज्यादा आसान है। और मैं प्रत्येक व्यक्ति को 0 से 2 तक वर्गाकार कोष्ठकों का उपयोग करके एक्सेस कर सकता हूं।

यह अभी तक बिल्कुल ग्राउंड-ब्रेकिंग सामान नहीं है। लेकिन वे फाइलें हमें कुछ उपयोगी बातें बताती हैं। आइए एक Get-Member करते हैं हमारे सरणी पर आदेश।

इससे विचलित न हों। शीर्ष पर हम देख सकते हैं कि हम System.IO.FileInfo प्रकार की वस्तुओं के साथ काम कर रहे हैं। . यह एक नेट चीज है और यहीं से शक्ति आती है। हम देख सकते हैं कि हम Delete . को कॉल कर सकते हैं इन फ़ाइलों के तरीके, या CopyTo , या Decrypt (यदि वे एन्क्रिप्ट किए गए थे, लेकिन वे नहीं हैं), और बहुत कुछ। नीचे हम गुण देखते हैं।

यह अधिक दिलचस्प है। आइए देखें LastWriteTime . क्योंकि हमें इसमें दिलचस्पी हो सकती है कि वह कब है।

हम उपयोग कर सकते हैं Select-Object केवल कुछ गुण दिखाने के लिए।

जैसा कि अपेक्षित था, उन फ़ाइलों के लिए कुछ भी नहीं लिखा गया है क्योंकि वास्तव में इंस्टॉल किए गए थे। लेकिन क्या होगा अगर मैं इसे फ़िल्टर करना चाहता हूं, केवल एक विशेष समय के बाद से?

मैं Get-Date का उपयोग करने जा रहा हूं वर्तमान दिनांक और समय प्राप्त करने के लिए। मैं इसे गोल कोष्ठक में लपेटने जा रहा हूं और इसके AddYears . का उपयोग करूंगा एक साल पहले खोजने की विधि। वास्तविक दुनिया में मैं AddDays . का उपयोग करने के लिए अधिक इच्छुक हूं , लेकिन मैं कुछ परिणाम प्राप्त करना चाहता हूं।

और मैं $configfilelist को फ़िल्टर करने जा रहा हूं Where-Object . में पास करके (सिवाय इसके कि मैं एक सुविधाजनक शॉर्टकट का उपयोग करने जा रहा हूं जो प्रश्न-चिह्न है)। मेरा फ़िल्टर घुंघराले कोष्ठक ('ब्रेसिज़', है ना?) के अंदर रहता है, और उन घुंघराले कोष्ठकों के अंदर मैं $configfilelist की चीज़ों का उल्लेख करता हूँ $_ . का उपयोग करके .

तो मेरा फ़िल्टर इस तरह जाता है, कह रहा है कि मैं उन लोगों को सूचीबद्ध करना चाहता हूं जिनके पास LastWriteTime है (-gt . से बड़ा ) अब से एक साल पहले:

और मुझे केवल एक फाइल मिलती है। कमाल का।

यह सब ठीक है और अच्छा है, लेकिन अब मैं जानना चाहता हूं कि वह स्थापना किस बारे में थी। इसके लिए हमें फाइल के अंदर देखने की जरूरत है। Get-Content यहाँ हमारा दोस्त है। आइए Get-Content . का उपयोग करके प्रारंभ करें सीधे एक फाइल के खिलाफ। इसे बाद में हमारे उचित आदेश में शामिल करना आसान होगा।

Get-Content वास्तव में लाइनों की एक सरणी देता है, और इसमें वास्तव में उपयोगी पैरामीटर हैं जैसे -TotalCount जो कुछ निश्चित पंक्तियों के बाद रुक जाता है, या -Tail जो फ़ाइल के अंत में लाइनें प्राप्त करता है। मुझे यह पसंद है जब मैं बड़ी फाइलों के साथ काम कर रहा हूं - ऐसा नहीं है कि मैं उन्हें नोटपैड में खोल सकता हूं।

मैं आपको . के बारे में बताता हूँ चयन-स्ट्रिंग भी। यह grep जैसा है यूनिक्स से - आप इसका उपयोग फ़ाइल में इच्छित पंक्तियों को प्राप्त करने के लिए करते हैं।

वह आउटपुट एक दर्द की तरह लगता है, लेकिन याद रखें कि यह सिर्फ एक वस्तु का स्ट्रिंग प्रतिनिधित्व है। अगर मैं अपने आदेश को gm . में पाइप करता हूं (Get-Member ), आप देखेंगे कि मेरा क्या मतलब है।

तो अब मैं बता सकता हूं कि मैं Path तक पहुंच सकता हूं फ़ाइल का, Line , LineNumber , आदि, अलग से।

कई चीजों को देखने के लिए, मैं पैरामीटर की एक सरणी को -Pattern . पर पास करना चाहता हूं . मैं इसे केवल अल्पविराम का उपयोग करके करता हूं, यह पता लगाने के लिए कि यह विश्लेषण सेवाओं की स्थापना थी।

उम्मीद है कि आप इसकी ताकत देखना शुरू कर रहे हैं।

मैं इसका उपयोग करके सभी को एक पंक्ति में छोड़ सकता हूं:

dir -rec -inc ConfigurationFile.ini | ? {$_.LastWriteTime -gt (Get-Date).AddYears(-1)} | select-string -Pattern 'FEATURES=','ACTION=' | select-object Path, Line

(क्षमा करें, यह सब देखने के लिए आपको एक तरफ स्क्रॉल करना होगा - एक ही लाइन पर सब कुछ प्राप्त करना HTML में एक गुण नहीं है।)

जब आप अपनी पसंद की चीज़ों पर काम कर रहे हों, तो आप बाद में कहीं के लिए कमांड को स्टोर करना चाहेंगे (जैसे कि आपके द्वारा चलाए जाने वाले .ps1 फ़ाइल में)। उसके लिए, आप Get-History . से अवगत होना चाहते हैं . यह उस सत्र में आपके द्वारा चलाई गई सभी चीज़ों को सूचीबद्ध करता है।

और एक साफ-सुथरी छोटी चाल यह है कि आप दूसरे छोर से सरणियों में हुक करने के लिए ऋणात्मक संख्याओं का उपयोग कर सकते हैं। तो आप यह कर सकते हैं:

लेकिन इसे केवल प्रदर्शित करने के बजाय, इसे clip में डालें :

...जो इसे क्लिपबोर्ड पर ले आता है।

मैं इसके साथ बहुत आगे नहीं जा रहा हूं, लेकिन आप इसे आगे और आगे बढ़ा सकते हैं, उन चीजों की खोज कर सकते हैं जो आपके काम में दिलचस्प हो सकती हैं। आप > . का उपयोग करके परिणामों को फ़ाइलों में डंप कर सकते हैं और >> . का उपयोग करके फ़ाइलों में संलग्न करें .

अब इस तरह के आदेशों पर विचार करें:

Get-EventLog -LogName Application -After (Get-Date).AddHours(-1) -EntryType Error

... और कल्पना करें कि आप इसके साथ क्या कर सकते हैं।

यह करने का प्रयास करें:Import-Module SQLServer

जो तब आपको जाने देता है:

cd SQLSERVER:

और SQL वातावरण को ब्राउज़ करें जैसे कि यह एक फाइल सिस्टम है।

मैं अक्सर इस तरह एसक्यूएल का पता लगाने के लिए पावरशेल का उपयोग नहीं करता, मुझे स्वीकार करना होगा। लेकिन यह तथ्य कि मैं निश्चित रूप से मुझे विकल्पों का एक गुच्छा दे सकता हूं। तथ्य यह है कि मैं पावरशेल का उपयोग वर्ड दस्तावेज़ बनाने के लिए कर सकता था जैसे कि वे https://learn-powershell.net/2014/12/31/beginning-with-powershell-and-word/ पर करते हैं, या जैसा कि वर्णित है ईमेल भेजें https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage, या https://docs.microsoft पर बताए अनुसार वेब सेवाओं को कॉल करें (जिसमें Azure Machine Learning शामिल हैं) .com/en-gb/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest का अर्थ है कि थोड़ी कल्पना के साथ, आप जो कुछ भी चाहते हैं उसे करने के लिए PowerShell का उपयोग कर सकते हैं। मुझे SQL से डेटा प्राप्त करने के लिए Invoke-SqlCommand का उपयोग करना पसंद है, इसे Invoke-WebRequest में धकेलें Azure ML से स्कोर प्राप्त करने के लिए, और फिर उसके अनुसार प्रतिक्रिया दें। पावरशेल इसे वास्तव में सीधा बनाता है।

ओह, और अन्य मशीनों पर पावरशेल कमांड चलाने के लिए (जो निश्चित रूप से काफी उपयोगी हो सकता है), एक त्वरित 'इंटरनेट खोज' ने मुझे यह उपयोगी दिखने वाला पृष्ठ दिखाया:https://www.howtogeek.com/117192/how-to -रन-पावरशेल-कमांड-ऑन-रिमोट-कंप्यूटर/

आपके पास फ़ाइल के अंदर कंप्यूटरों की एक सूची हो सकती है, और इसके माध्यम से लूप इस तरह हो सकता है:

कुछ सामान की कोशिश करो। अपने आप को बाहर करना। और अन्वेषण करें कि इस महीने मंगलवार को T-SQL के लिए हर कोई क्या लिख ​​रहा है, जिसे Rob Sewell (@sqldbawithbeard) द्वारा होस्ट किया गया है

@rob_farley


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रदर्शन आश्चर्य और अनुमान :DATEADD

  2. समानांतर सांख्यिकी पुनर्निर्माण के लिए बेहतर समर्थन

  3. पैरामीटर सूँघने वाला प्राइमर

  4. Windows Azure VM प्रदर्शन की तुलना करना, भाग 1

  5. एसक्यूएल, डेटा कैसे अपडेट करें