गीक स्कूल: आपकी पहली पूर्ण पावरशेल स्क्रिप्ट लिखना

विषयसूची:

गीक स्कूल: आपकी पहली पूर्ण पावरशेल स्क्रिप्ट लिखना
गीक स्कूल: आपकी पहली पूर्ण पावरशेल स्क्रिप्ट लिखना
Anonim
कुछ हफ्ते पहले, गीक ने आपको दिखाया कि आप कंप्यूटर को आखिरी बार कब शुरू कर चुके थे, यह जानने के लिए आप कमांड प्रॉम्प्ट का उपयोग कैसे कर सकते हैं। पावरशेल के लिए गीक स्कूल की इस आखिरी स्थापना में, हम एक ही चीज़ करने के लिए एक पुन: प्रयोज्य PowerShell कमांड लिखने जा रहे हैं।
कुछ हफ्ते पहले, गीक ने आपको दिखाया कि आप कंप्यूटर को आखिरी बार कब शुरू कर चुके थे, यह जानने के लिए आप कमांड प्रॉम्प्ट का उपयोग कैसे कर सकते हैं। पावरशेल के लिए गीक स्कूल की इस आखिरी स्थापना में, हम एक ही चीज़ करने के लिए एक पुन: प्रयोज्य PowerShell कमांड लिखने जा रहे हैं।

श्रृंखला में पिछले लेखों को पढ़ना सुनिश्चित करें:

  • PowerShell के साथ विंडोज स्वचालित करने के लिए जानें
  • PowerShell में Cmdlets का उपयोग करना सीखना
  • PowerShell में ऑब्जेक्ट्स का उपयोग कैसे करें सीखना
  • PowerShell में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना
  • PowerShell में रिमोटिंग का उपयोग करना सीखें
  • कंप्यूटर जानकारी प्राप्त करने के लिए PowerShell का उपयोग करना
  • PowerShell में संग्रह के साथ काम करना
  • PowerShell में जॉब्स का उपयोग कैसे करें सीखें
  • PowerShell को विस्तारित करने का तरीका जानें
  • पावरशेल वैरिएबल, इनपुट और आउटपुट सीखना

अपनी पहली स्क्रिप्ट लिखना

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

तो अब हम जानते हैं कि हम कहां से जो जानकारी खोज रहे हैं उसे प्राप्त कर सकते हैं, आईएसई खोलें और निम्न टाइप करें।
तो अब हम जानते हैं कि हम कहां से जो जानकारी खोज रहे हैं उसे प्राप्त कर सकते हैं, आईएसई खोलें और निम्न टाइप करें।

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

नोट: मुझे अपने कोड को दो पंक्तियों में विभाजित करना था ताकि यह सब स्क्रीनशॉट में फिट हो, लेकिन इसे एक पंक्ति पर टाइप करने के लिए स्वतंत्र महसूस हो। यदि आप इसे दो पंक्तियों में विभाजित करना चुनते हैं, तो कृपया सुनिश्चित करें कि पाइप वर्ण पंक्ति 1 पर अंतिम वर्ण है।

अब कोड का परीक्षण करने के लिए हरे "रन स्क्रिप्ट" बटन पर क्लिक करें या अपने कीबोर्ड पर F5 कुंजी दबाएं।
अब कोड का परीक्षण करने के लिए हरे "रन स्क्रिप्ट" बटन पर क्लिक करें या अपने कीबोर्ड पर F5 कुंजी दबाएं।
डब्ल्यूएमआई समय थोड़ा सा गूढ़ हो सकता है। इसका मतलब है कि यदि आप LastBootUpTime प्रॉपर्टी देखते हैं, तो यह 2013-03-19 को 18:26:21 पर कहता है, लेकिन किसी कारण से डब्लूएमआई लोगों ने इसे सभी को एक स्ट्रिंग में संयोजित करने का निर्णय लिया। सौभाग्य से हमारे लिए, हमें स्ट्रिंग को मैन्युअल रूप से पार्स करने की चिंता करने की आवश्यकता नहीं है क्योंकि इसे करने के लिए एक आसान तरीका है, हालांकि अधिक उन्नत। इस तरह दिखने के लिए आपको कोड के चयन-ऑब्जेक्ट भाग को बदलने की आवश्यकता होगी:
डब्ल्यूएमआई समय थोड़ा सा गूढ़ हो सकता है। इसका मतलब है कि यदि आप LastBootUpTime प्रॉपर्टी देखते हैं, तो यह 2013-03-19 को 18:26:21 पर कहता है, लेकिन किसी कारण से डब्लूएमआई लोगों ने इसे सभी को एक स्ट्रिंग में संयोजित करने का निर्णय लिया। सौभाग्य से हमारे लिए, हमें स्ट्रिंग को मैन्युअल रूप से पार्स करने की चिंता करने की आवश्यकता नहीं है क्योंकि इसे करने के लिए एक आसान तरीका है, हालांकि अधिक उन्नत। इस तरह दिखने के लिए आपको कोड के चयन-ऑब्जेक्ट भाग को बदलने की आवश्यकता होगी:

Select-Object -Property CSName,@{n=”Last Booted”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

हम यहां क्या कर रहे हैं "अंतिम बूट" नामक एक कस्टम प्रॉपर्टी तैयार कर रही है और यह निर्दिष्ट कर रही है कि इसका मान वर्तमान पाइपलाइन ऑब्जेक्ट की LastBootUpTime प्रॉपर्टी पर ToDateTime स्थैतिक विधि को कॉल करने का परिणाम होना चाहिए। आपका कोड अब इस तरह दिखना चाहिए।

कोड को चलाने से अब एक और अधिक पठनीय अंतिम बूट समय मिलेगा।
कोड को चलाने से अब एक और अधिक पठनीय अंतिम बूट समय मिलेगा।
अब जब हम अपनी लिपि की बुनियादी कार्यक्षमता से खुश हैं, तो हमें इसे सहेजने की ज़रूरत है। सादगी के लिए, इसे निम्न के रूप में सहेजें:
अब जब हम अपनी लिपि की बुनियादी कार्यक्षमता से खुश हैं, तो हमें इसे सहेजने की ज़रूरत है। सादगी के लिए, इसे निम्न के रूप में सहेजें:

C:Get-LastBootTime.ps1

अब आईएसई के निचले हिस्से में स्विच करें और निम्न चलाएं:
अब आईएसई के निचले हिस्से में स्विच करें और निम्न चलाएं:

C:Get-LastBootTime.ps1

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

param( [string]$ComputerName )

फिर हार्डकोडेड लोकहोस्ट मान को $ ComputerName चर के साथ प्रतिस्थापित करें। आपकी स्क्रिप्ट अब इस तरह दिखनी चाहिए:

अपनी स्क्रिप्ट को सहेजें, फिर आईएसई के निचले हिस्से में वापस जाएं और अपनी स्क्रिप्ट के लिए सहायता देखें।
अपनी स्क्रिप्ट को सहेजें, फिर आईएसई के निचले हिस्से में वापस जाएं और अपनी स्क्रिप्ट के लिए सहायता देखें।

help C:Get-LastBootTime.ps1

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

[Parameter(Mandatory=$true)][string]$ComputerName

एक बेहतर सहायता फ़ाइल बनाने के लिए, सबसे आम तरीका टिप्पणी आधारित सहायता का उपयोग करना है। इसका मतलब है कि हम सिर्फ स्क्रिप्ट के शीर्ष पर एक अतिरिक्त लंबी टिप्पणी जोड़ते हैं।

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

एक बार ऐसा करने के बाद, आपको इस तरह की एक स्क्रिप्ट के साथ समाप्त होना चाहिए।

सिफारिश की: