PowerShell के साथ यादृच्छिक नाम और फ़ोन नंबर कैसे उत्पन्न करें

विषयसूची:

PowerShell के साथ यादृच्छिक नाम और फ़ोन नंबर कैसे उत्पन्न करें
PowerShell के साथ यादृच्छिक नाम और फ़ोन नंबर कैसे उत्पन्न करें

वीडियो: PowerShell के साथ यादृच्छिक नाम और फ़ोन नंबर कैसे उत्पन्न करें

वीडियो: PowerShell के साथ यादृच्छिक नाम और फ़ोन नंबर कैसे उत्पन्न करें
वीडियो: New Uber Quest Goals | Pros And Cons For Drivers - YouTube 2024, जुलूस
Anonim
जब आपको परीक्षण या प्रदर्शन के लिए डेटा सेट की आवश्यकता होती है, और उस सेट को व्यक्तिगत पहचान योग्य जानकारी (पीआईआई) का प्रतिनिधित्व करने की आवश्यकता होती है, तो आप आम तौर पर वास्तविक डेटा का प्रतिनिधित्व नहीं करना चाहते हैं जो वास्तविक लोगों का प्रतिनिधित्व करता है। यहां, हम इस तरह के अवसर के लिए यादृच्छिक नामों और फोन नंबरों की एक सूची उत्पन्न करने के लिए PowerShell का उपयोग कैसे कर सकते हैं, इस माध्यम से आप चलेंगे।
जब आपको परीक्षण या प्रदर्शन के लिए डेटा सेट की आवश्यकता होती है, और उस सेट को व्यक्तिगत पहचान योग्य जानकारी (पीआईआई) का प्रतिनिधित्व करने की आवश्यकता होती है, तो आप आम तौर पर वास्तविक डेटा का प्रतिनिधित्व नहीं करना चाहते हैं जो वास्तविक लोगों का प्रतिनिधित्व करता है। यहां, हम इस तरह के अवसर के लिए यादृच्छिक नामों और फोन नंबरों की एक सूची उत्पन्न करने के लिए PowerShell का उपयोग कैसे कर सकते हैं, इस माध्यम से आप चलेंगे।

जिसकी आपको जरूरत है

शुरू करने से पहले, आपके पास कुछ टूल और जानकारी होनी चाहिए:

शक्ति कोशिका

यह स्क्रिप्ट PowerShell 4.0 का उपयोग करके विकसित की गई थी, और PowerShell 2.0 के साथ संगतता के लिए भी परीक्षण किया गया है। विंडोज 7 के बाद से PowerShell 2.0 या बाद में विंडोज़ में अंतर्निहित किया गया है। यह विंडोज प्रबंधन फ्रेमवर्क (डब्लूएमएफ) के हिस्से के रूप में विंडोज एक्सपी और विस्टा के लिए भी उपलब्ध है। कुछ और विवरण, और डाउनलोड के लिए लिंक, नीचे हैं।

  • पावरशेल 2.0 विंडोज 7 के साथ आता है। विंडोज एक्सपी एसपी 3 और विस्टा (एसपी 1 या बाद में) उपयोगकर्ता KB968929 में माइक्रोसॉफ्ट से उपयुक्त डब्लूएमएफ संस्करण डाउनलोड कर सकते हैं। यह XP SP2 या नीचे, या SP1 के बिना Vista पर समर्थित नहीं है।
  • पावरशेल 4.0 विंडोज 8.1 के साथ आता है। विंडोज 7 एसपी 1 उपयोगकर्ता माइक्रोसॉफ्ट डाउनलोड सेंटर से डब्लूएमएफ अपडेट के हिस्से के रूप में इसे अपग्रेड कर सकते हैं। यह एक्सपी या विस्टा के लिए उपलब्ध नहीं है।

नाम

यादृच्छिक जनरेटर में फ़ीड करने के लिए आपको नामों की कुछ सूचियों की आवश्यकता होगी। ए के लिए एक महान स्रोत बहुत नामों, और उनकी लोकप्रियता के बारे में जानकारी (हालांकि इस स्क्रिप्ट के लिए इसका उपयोग नहीं किया जाएगा), संयुक्त राज्य अमेरिका की जनगणना ब्यूरो है। नीचे दिए गए लिंक पर उपलब्ध सूचियां बहुत बड़ी हैं, इसलिए यदि आप एक साथ कई नाम और संख्याएं उत्पन्न करने की योजना बना रहे हैं तो आप उन्हें थोड़ी देर तक ट्रिम करना चाहेंगे। हमारी परीक्षण प्रणाली पर, प्रत्येक नाम / संख्या जोड़ी ने पूर्ण सूचियों का उपयोग करके उत्पन्न करने के लिए लगभग 1.5 सेकंड लिया लेकिन आपका माइलेज आपके सिस्टम चश्मे के आधार पर अलग-अलग होगा।

  • उपनाम
  • पुरुष पहले नाम
  • महिला पहला नाम

आपके द्वारा उपयोग किए जाने वाले स्रोत के बावजूद, आपको तीन टेक्स्ट फाइलें उत्पन्न करने की आवश्यकता होगी, जो स्क्रिप्ट अपने नाम चयन के लिए पूल के रूप में उपयोग कर सकती हैं। प्रत्येक फ़ाइल में केवल नाम होना चाहिए, और प्रति पंक्ति केवल एक ही नाम होना चाहिए। इन्हें आपके PowerShell स्क्रिप्ट के समान फ़ोल्डर में संग्रहीत करने की आवश्यकता है।

Surnames.txt उन उपनामों को शामिल करना चाहिए जिन्हें आप स्क्रिप्ट से चुनना चाहते हैं। उदाहरण:

Smith Johnson Williams Jones Brown

Males.txt उस पुरुष के पहले नाम होना चाहिए जिसमें आप स्क्रिप्ट को चुनना चाहते हैं। उदाहरण:

James John Robert Michael William

Females.txt उस महिला को पहले नाम होना चाहिए जिसमें आप स्क्रिप्ट को चुनना चाहते हैं। उदाहरण:

Mary Patricia Linda Barbara Elizabeth

फोन नंबर के लिए नियम

यदि आप यह सुनिश्चित करना चाहते हैं कि आपके फोन नंबर किसी के वास्तविक फोन नंबर से मेल नहीं खाते हैं, तो सबसे अच्छा तरीका प्रसिद्ध 555 एक्सचेंज कोड का उपयोग करना है। लेकिन यदि आप बहुत से फोन नंबरों के साथ डेटा सेट दिखाएंगे, तो 555 बहुत ही नीरस वास्तविक तेज़ दिखने लगेगा। चीजों को और अधिक रोचक बनाने के लिए, हम अन्य फोन नंबर जेनरेट करेंगे जो उत्तरी अमेरिकी नंबरिंग प्लान (एनएएनपी) नियमों का उल्लंघन करते हैं। नीचे कुछ नमूना अमान्य फ़ोन नंबर हैं, जो प्रत्येक स्क्रिप्ट का प्रतिनिधित्व करते हैं जो इस स्क्रिप्ट द्वारा उत्पन्न किया जाएगा:

  • (157) 836-8167 यह संख्या अमान्य है क्योंकि एरिया कोड 1 या 0 से शुरू नहीं हो सकते हैं।
  • (298) 731-6185 यह संख्या अमान्य है क्योंकि एनएएनपी दूसरे अंकों के रूप में 9 के साथ एरिया कोड असाइन नहीं कर रहा है।
  • (678) 035-7598 यह संख्या अमान्य है क्योंकि एक्सचेंज कोड 1 या 0 से शुरू नहीं हो सकते हैं।
  • (752) 811-1375 यह संख्या अमान्य है क्योंकि एक्सचेंज कोड दो 1s के साथ समाप्त नहीं हो सकता है।
  • (265) 555-0128 यह संख्या अमान्य है क्योंकि एक्सचेंज कोड 555 है, तथा सब्सक्राइबर आईडी नकली संख्याओं के लिए आरक्षित सीमा के भीतर है।
  • (800) 555-0199 यह संख्या 555 एक्सचेंज कोड वाला एकमात्र 800 नंबर है जो एक फर्जी नंबर के रूप में उपयोग के लिए आरक्षित है।

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

सामान्य आदेश

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

  • Foreach-वस्तु वस्तुओं का एक सरणी, या सूची लेता है और उनमें से प्रत्येक पर निर्दिष्ट ऑपरेशन करता है। फॉरएच-ऑब्जेक्ट स्क्रिप्ट ब्लॉक के भीतर, $ _ चर का उपयोग वर्तमान आइटम को संसाधित करने के लिए किया जाता है।
  • यदि नहीं तो बयान आपको केवल एक ऑपरेशन करने की इजाजत देता है अगर कुछ शर्तों को पूरा किया जाता है, और (वैकल्पिक रूप से) निर्दिष्ट करें कि उस स्थिति को पूरा नहीं होने पर क्या किया जाना चाहिए।
  • स्विच विवरण अधिक पसंद के साथ बयान की तरह हैं। स्विच कई स्थितियों के खिलाफ ऑब्जेक्ट की जांच करेगा, और ऑब्जेक्ट से मेल खाने वाली स्थितियों के लिए जो भी स्क्रिप्ट ब्लॉक निर्दिष्ट किया जाता है उसे चलाएं। आप वैकल्पिक रूप से एक डिफ़ॉल्ट ब्लॉक निर्दिष्ट कर सकते हैं जो केवल तभी चलाएगा जब कोई अन्य स्थितियां मेल नहीं खाती हैं। स्विच कथन भी मौजूदा आइटम को संसाधित करने के लिए $ _ चर का उपयोग करते हैं।
  • जबकि बयान आपको एक स्क्रिप्ट ब्लॉक को लगातार दोहराने की अनुमति देता है जब तक कि एक निश्चित स्थिति पूरी हो जाती है। एक बार ऐसा होता है जब स्क्रिप्ट ब्लॉक समाप्त होने पर स्थिति अब सत्य नहीं होती है, तो लूप निकलता है।
  • पकड़ने की कोशिश बयान त्रुटि प्रबंधन के साथ मदद करते हैं। यदि कोशिश के लिए निर्दिष्ट स्क्रिप्ट ब्लॉक के साथ कुछ भी गलत हो जाता है, तो कैच ब्लॉक चलाएगा।
  • सामग्री लो टिन पर दिये गये निर्देशों का पालन करो।यह एक निर्दिष्ट वस्तु की सामग्री प्राप्त करता है - आमतौर पर एक फ़ाइल। इसका उपयोग कंसोल पर किसी टेक्स्ट फ़ाइल की सामग्री को प्रदर्शित करने के लिए किया जा सकता है, या इस स्क्रिप्ट में, पाइपलाइन के साथ सामग्री को अन्य आदेशों के साथ उपयोग करने के लिए पास किया जा सकता है।
  • राइट-होस्ट कंसोल में सामान डालता है। इसका उपयोग उपयोगकर्ता को संदेश प्रस्तुत करने के लिए किया जाता है, और यदि आउटपुट रीडायरेक्ट हो जाता है तो स्क्रिप्ट के आउटपुट में शामिल नहीं किया जाता है।
  • राइट-आउटपुट वास्तव में उत्पादन उत्पन्न करता है। आम तौर पर, यह कंसोल पर डाला जाता है लेकिन इसे अन्य आदेशों द्वारा भी पुनर्निर्देशित किया जा सकता है।

लिपि में अन्य आदेश हैं, लेकिन हम उन लोगों को समझाएंगे जैसे हम जाते हैं।

स्क्रिप्ट का निर्माण

अब हमारे हाथ गंदे होने का समय है।

भाग 1: जाने के लिए तैयार हो रही है

यदि आप अपनी स्क्रिप्ट को क्लीन कंसोल से चलना शुरू करना चाहते हैं, तो यहां पहली पंक्ति है जिसे आप चाहते हैं।

Clear-Host

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

$ScriptFolder = Split-Path $MyInvocation.MyCommand.Definition -Parent $RequiredFiles = ('Males.txt','Females.txt','Surnames.txt')

पहली पंक्ति किसी भी स्क्रिप्ट के लिए बहुत उपयोगी है। यह एक वेरिएबल को परिभाषित करता है जो स्क्रिप्ट वाले फ़ोल्डर को इंगित करता है। यह आवश्यक है यदि आपकी स्क्रिप्ट को अन्य फ़ाइलों की आवश्यकता है जो एक ही निर्देशिका में स्थित हैं (या उस निर्देशिका से ज्ञात सापेक्ष पथ), क्योंकि आप अन्यथा त्रुटियों का सामना करेंगे जब आप किसी अन्य में हों, कार्यकारी डाइरेक्टरी।

दूसरी पंक्ति स्क्रिप्ट के ठीक से चलाने के लिए आवश्यक फ़ाइल नामों की एक सरणी बनाती है। हम अगले स्क्रिप्ट में $ ScriptFolder चर के साथ इसका उपयोग करेंगे, जहां हम यह सुनिश्चित करने के लिए जांच करेंगे कि वे फ़ाइलें मौजूद हैं।

$RequiredFiles | ForEach-Object { if (!(Test-Path '$ScriptFolder$_')) { Write-Host '$_ not found.' -ForegroundColor Red $MissingFiles++ } }

स्क्रिप्ट का यह हिस्सा $ RequiredFiles सरणी को फॉरएच-ऑब्जेक्ट ब्लॉक में भेजता है। उस स्क्रिप्ट ब्लॉक के भीतर, यदि कथन कथन टेस्ट-पथ का उपयोग करता है यह देखने के लिए कि क्या हम जिस फाइल को खोज रहे हैं वह वह है जहां यह संबंधित है। टेस्ट-पथ एक साधारण कमांड है कि, जब फ़ाइल पथ दिया जाता है, तो हमें यह बताने के लिए एक बुनियादी सत्य या झूठी प्रतिक्रिया देता है कि पथ मौजूद कुछ चीज़ों को इंगित करता है या नहीं। वहां विस्मयादिबोधक बिंदु एक है नहीं ऑपरेटर, जो कि अगर कथन पर पास करने से पहले टेस्ट-पथ की प्रतिक्रिया को उलट देता है। तो यदि टेस्ट-पथ गलत लौटाता है (यानी, जिस फ़ाइल को हम ढूंढ रहे हैं वह मौजूद नहीं है), तो इसे सत्य में परिवर्तित कर दिया जाएगा ताकि अगर कथन अपना स्क्रिप्ट ब्लॉक निष्पादित कर सके।

यहां ध्यान देने योग्य एक और बात, जिसे अक्सर इस स्क्रिप्ट में उपयोग किया जाएगा, एकल-उद्धरण के बजाय डबल-कोट्स का उपयोग होता है। जब आप एकल-कोट्स में कुछ डालते हैं, तो PowerShell इसे स्थिर स्ट्रिंग के रूप में मानता है। जो भी उद्धरण में है, वैसे ही साथ ही पारित किया जाएगा। डबल-कोट्स PowerShell को इसके साथ गुजरने से पहले स्ट्रिंग के भीतर चर और कुछ अन्य विशेष वस्तुओं का अनुवाद करने के लिए कहता है। यहां, डबल कोट्स का मतलब है कि चलने की बजाए टेस्ट-पथ '$ स्क्रिप्टफोल्डर $ _' हम वास्तव में कुछ और कर रहे होंगे टेस्ट-पथ 'सी: स्क्रिप्ट Surnames.txt' (मान लीजिए कि आपकी स्क्रिप्ट सी: स्क्रिप्ट्स में है, और ForEach-Object वर्तमान में 'Surnames.txt' पर काम कर रही है)।

प्रत्येक फ़ाइल के लिए नहीं मिला, लिखने के लिए आपको कौन सी फ़ाइल गुम है, लिखने के लिए लाल-त्रुटि एक त्रुटि संदेश पोस्ट करेगा। फिर यह $ MissingFiles वैरिएबल को बढ़ाता है जिसका उपयोग अगले टुकड़े में किया जाएगा, त्रुटि के लिए और अगर कोई फाइल गायब हो तो छोड़ दें।

if ($MissingFiles) { Write-Host 'Could not find $MissingFiles source file(s). Aborting script.' -ForegroundColor Red Remove-Variable ScriptFolder,RequiredFiles,MissingFiles Exit }

यहां बयान के साथ आप एक और साफ चाल कर सकते हैं। यदि आप कथन के बारे में देखेंगे तो अधिकांश गाइड आपको एक परिस्थिति का उपयोग करने के लिए एक ऑपरेटर का उपयोग करने के लिए कहेंगे। उदाहरण के लिए, यहां हम उपयोग कर सकते हैं अगर ($ MissingFiles -gt 0) यह देखने के लिए कि $ MissingFiles शून्य से अधिक है या नहीं। हालांकि, अगर आप पहले से ही कमांड का उपयोग कर रहे हैं जो एक बूलियन वैल्यू लौटाता है (जैसा कि पिछले ब्लॉक में हम टेस्ट-पथ का उपयोग कर रहे थे) जो आवश्यक नहीं है। आप इस तरह के मामलों में इसके बिना भी कर सकते हैं, जब आप यह देखने के लिए परीक्षण कर रहे हैं कि कोई संख्या शून्य है या नहीं। किसी भी गैर-शून्य संख्या (सकारात्मक या नकारात्मक) को सत्य के रूप में माना जाता है, जबकि शून्य (या, जैसा कि यहां हो सकता है, एक अस्तित्वहीन चर) को झूठा माना जाएगा।

यदि $ MissingFiles मौजूद है, और शून्य नहीं है, तो लिखें-होस्ट एक संदेश पोस्ट करेगा जो आपको बताएगा कि कितनी फाइलें गायब हैं और स्क्रिप्ट निरस्त हो जाएगी। फिर, निकालें-वेरिएबल हमारे द्वारा बनाए गए सभी चर साफ़ कर देगा और बाहर निकलें स्क्रिप्ट छोड़ देंगे। नियमित PowerShell कंसोल पर, इस विशेष उद्देश्य के लिए निकालें-वेरिएबल की वास्तव में आवश्यकता नहीं है क्योंकि स्क्रिप्ट द्वारा सेट किए गए चर सामान्य रूप से छोड़े जाते हैं जब स्क्रिप्ट निकलती है। हालांकि, पावरशेल आईएसई थोड़ा अलग व्यवहार करता है ताकि आप इसे वहां रखना चाहें यदि आप वहां से स्क्रिप्ट चलाने की योजना बना रहे हैं।

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

New-Alias g Get-Random

आदेशों के लिए वैकल्पिक नाम बनाने के लिए उपनाम का उपयोग किया जाता है। ये नए इंटरफ़ेस से परिचित होने में हमारी सहायता के लिए उपयोगी हो सकते हैं (उदा.: PowerShell में अंतर्निहित उपनाम हैं डीआईआर -> गेट-चाइल्ड इटिम तथा बिल्ली -> सामग्री प्राप्त करें) या आमतौर पर उपयोग किए जाने वाले कमांड के लिए शॉर्ट-हाथ संदर्भ बनाने के लिए। यहां, हम एक बना रहे हैं बहुत के लिए संक्षिप्त हाथ संदर्भ Get-रैंडम कमांड का उपयोग बाद में किया जा रहा है।

गेट-रैंडम बहुत अधिक करता है जिसका नाम तात्पर्य है। इनपुट के रूप में एक सरणी (नामों की एक सूची की तरह) को देखते हुए, यह सरणी से एक यादृच्छिक आइटम चुनता है और इसे थूकता है। इसका उपयोग यादृच्छिक संख्या उत्पन्न करने के लिए भी किया जा सकता है। गेट-रैंडम और संख्याओं के बारे में याद रखने की बात यह है कि, कई अन्य कंप्यूटर परिचालनों की तरह, यह शून्य से गिनती शुरू कर देता है। तो इसके बजाय गेट-रैंडम 10 जिसका मतलब है कि "मुझे 1 से 10 तक एक नंबर दें" का अर्थ वास्तव में है "मुझे 0 से 9 तक एक नंबर दें।" आप संख्या चयन के बारे में अधिक विशिष्ट हो सकते हैं, ताकि गेट-रैंडम आपके जैसे स्वाभाविक रूप से व्यवहार करे उम्मीद है, लेकिन हमें इस स्क्रिप्ट में इसकी आवश्यकता नहीं होगी।

भाग 2: उपयोगकर्ता इनपुट प्राप्त करना और काम करना

जबकि एक स्क्रिप्ट जो केवल एक यादृच्छिक नाम और फोन नंबर उत्पन्न करती है, यह बहुत बेहतर है अगर स्क्रिप्ट उपयोगकर्ता को यह निर्दिष्ट करने की अनुमति देती है कि वे एक बैच में कितने नाम और संख्या प्राप्त करना चाहते हैं। दुर्भाग्यवश, हम वास्तव में वैध इनपुट देने के लिए उपयोगकर्ताओं पर भरोसा नहीं कर सकते हैं। तो, बस इसके मुकाबले थोड़ा और अधिक है $ UserInput = रीड-होस्ट.

while (!$ValidInput) { try { [int]$UserInput = Read-Host -Prompt 'Items to be generated' $ValidInput = $true } catch { Write-Host 'Invalid input. Enter a number only.' -ForegroundColor Red } }

ऊपर दिए गए वक्तव्य के लिए चेक, और अस्वीकार करता है, $ ValidInput का मान। जब तक $ ValidInput गलत है, या अस्तित्व में नहीं है, यह अपने स्क्रिप्ट ब्लॉक के माध्यम से लूपिंग रखेगा।

कोशिश कथन उपयोगकर्ता-इनपुट को रीड-होस्ट के माध्यम से लेता है, और इसे एक पूर्णांक मान में बदलने का प्रयास करता है। (वह है [Int] रीड-होस्ट से पहले।) यदि यह सफल है, तो यह $ ValidInput को सत्य पर सेट करेगा ताकि जबकि लूप बाहर निकल सके। यदि सफल नहीं होता है, तो कैच ब्लॉक एक त्रुटि पोस्ट करता है और, क्योंकि $ ValidInput सेट नहीं किया गया था, जबकि लूप वापस आ जाएगा और उपयोगकर्ता को फिर से संकेत देगा।

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

Write-Host '`nGenerating $UserInput names & phone numbers. Please be patient.`n' 1..$UserInput | ForEach-Object { <# INSERT RANDOM NAME & NUMBER GENERATOR HERE #> }

चिंता न करें, हम यादृच्छिक नाम और संख्या जेनरेटर कोड को समझने के लिए आपको स्वयं नहीं छोड़ेंगे। यह सिर्फ एक प्लेसहोल्डर टिप्पणी है जो आपको दिखाएगा कि अगला अनुभाग (जहां असली काम किया जाता है) फिट होने जा रहा है।

लिखित-होस्ट लाइन बहुत सरल है। यह बस कहता है कि स्क्रिप्ट कितने नाम और फोन नंबर उत्पन्न करने जा रही है, और स्क्रिप्ट को अपना काम करते समय उपयोगकर्ता को धीरज रखने के लिए कहा जाता है।`nस्ट्रिंग के प्रारंभ और अंत में उस आउटपुट से पहले और बाद में एक रिक्त रेखा डालना है, बस इनपुट लाइन और नामों और संख्याओं की सूची के बीच कुछ दृश्य पृथक्करण देना। ध्यान रखें कि यह एक बैक-टिक (AKA "गंभीर उच्चारण" है - आमतौर पर टैब के ऊपर की कुंजी, 1 के बाईं ओर) और प्रत्येक के सामने एक एस्ट्रोफ़े या सिंगल-कोट नहीं n.

अगला भाग एक अलग तरीका दिखाता है जिसे आप फॉरएच-ऑब्जेक्ट लूप का उपयोग कर सकते हैं। आम तौर पर, जब आप एक निश्चित संख्या को चलाने के लिए स्क्रिप्ट ब्लॉक चाहते हैं, तो आप लूप के लिए नियमित रूप से सेट अप करेंगे के लिए ($ x = 1; $ x -le $ उपयोगकर्ता इनपुट; $ x ++) {<# यहां स्क्रिप करें #>}।फॉरएच-ऑब्जेक्ट हमें इसे पूर्णांक की एक सूची खिलाकर इसे सरल बनाने देता है और, वास्तव में उन पूर्णांकों के साथ कुछ भी करने के लिए कहने के बजाय, हम इसे तब तक चलाने के लिए एक स्थिर स्क्रिप्ट ब्लॉक देते हैं जब तक कि इसे पूर्णांक से बाहर नहीं किया जाता है।

भाग 3: एक यादृच्छिक नाम उत्पन्न करना

नाम उत्पन्न करना इस प्रक्रिया के बाकी हिस्सों का सबसे सरल बिट है। इसमें केवल तीन कदम होते हैं: उपनाम चुनना, लिंग चुनना, और पहला नाम चुनना। याद रखें कि उपनाम कुछ समय पहले गेट-रैंडम के लिए बनाया गया था? उपयोग करने के लिए इसे शुरू करने का समय।

$Surname = Get-Content '$ScriptFolderSurnames.txt' | g $Male = g 2 if ($Male) {$FirstName = Get-Content '$ScriptFolderMales.txt' | g} else {$FirstName = Get-Content '$ScriptFolderFemales.txt' | g}

पहली पंक्ति उपनामों की हमारी सूची लेती है, इसे यादृच्छिक पिकर में खिलाती है, और चुने गए नाम को $ उपनाम में असाइन करती है।

दूसरी पंक्ति हमारे व्यक्ति के लिंग को चुनती है। याद रखें कि गेट-रैंडम शून्य से गिनती कैसे शुरू करता है, और शून्य कितना झूठा है और बाकी सब कुछ सच है? इस तरह हम इसका उपयोग कर रहे हैं गेट-रैंडम 2 (या बहुत छोटा जी 2 हमारे उपनाम के लिए धन्यवाद - दोनों का परिणाम शून्य या एक के बीच एक विकल्प है) यह तय करने के लिए कि हमारा व्यक्ति पुरुष है या नहीं। अगर / अन्य कथन बाद में यादृच्छिक रूप से नर या मादा का पहला नाम चुनता है।

भाग 4: एक यादृच्छिक फोन नंबर उत्पन्न करना

वास्तव में मजेदार हिस्सा है। इससे पहले, हमने आपको दिखाया कि आप एक अवैध या नकली फोन नंबर बनाने के कई तरीके हैं। चूंकि हम नहीं चाहते हैं कि हमारी सभी संख्याएं एक दूसरे के समान दिखती हों, हम यादृच्छिक रूप से हर बार एक अवैध संख्या प्रारूप चुनेंगे। यादृच्छिक रूप से चुने गए प्रारूपों को उनके एरिया कोड और एक्सचेंज कोड द्वारा परिभाषित किया जाएगा, जो सामूहिक रूप से $ उपसर्ग के रूप में संग्रहीत किया जाएगा।

$NumberFormat = g 5 switch ($NumberFormat) { 0 {$Prefix = '($(g 2)$(g 10)$(g 10)) $(g 10)$(g 10)$(g 10)'} 1 {$Prefix = '($(g 10)9$(g 10)) $(g 10)$(g 10)$(g 10)'} 2 {$Prefix = '($(g 10)$(g 10)$(g 10)) $(g 2)$(g 10)$(g 10)'} 3 {$Prefix = '($(g 10)$(g 10)$(g 10)) $(g 10)11'} 4 {$Prefix = '($(g 10)$(g 10)$(g 10)) 555'} }

पहली पंक्ति एक सरल यादृच्छिक संख्या पीढ़ी है जिसे चुनने के लिए कि हम किस प्रारूप को फोन नंबर के लिए अनुसरण करेंगे। फिर, स्विच स्टेटमेंट उस यादृच्छिक पसंद को लेता है और तदनुसार एक $ उपसर्ग उत्पन्न करता है। याद रखें कि अमान्य फोन नंबर प्रकारों की सूची? $ NumberFormat मान 0-3 उस सूची में पहले चार से मेल खाते हैं। वैल्यू 4 पिछले दो में से एक उत्पन्न कर सकता है, क्योंकि दोनों "555" एक्सचेंज कोड का उपयोग करते हैं।

यहां, आप यह भी देख सकते हैं कि हम डबल-कोट्स के साथ एक और चाल का उपयोग कर रहे हैं। स्ट्रिंग आउटपुट होने से पहले डबल-कोट्स आपको वैरिएबल की व्याख्या करने की अनुमति नहीं देते हैं - वे आपको स्क्रिप्ट ब्लॉक को संसाधित करने देते हैं। ऐसा करने के लिए, आप स्क्रिप्ट ब्लॉक को इस तरह लपेटते हैं: "$ (<# यहां स्क्रिप करें #>)"। तो आपके ऊपर जो कुछ है वह बहुत से व्यक्तिगत रूप से यादृच्छिक अंक हैं, जिनमें से कुछ या तो अपनी सीमा में सीमित हैं या नियमों के अनुसार स्थिर रूप से सेट हैं जिन्हें हमें पालन करने की आवश्यकता है। प्रत्येक स्ट्रिंग में भी कंस्ट्रैसिस और रिक्ति होती है क्योंकि आप आमतौर पर एरिया कोड और एक्सचेंज कोड जोड़ी में देखना चाहते हैं।

हमारे नाम और फोन नंबर को आउटपुट करने के लिए तैयार होने से पहले हमें आखिरी चीज एक सब्सक्राइबर आईडी उत्पन्न करना है, जिसे $ प्रत्यय के रूप में संग्रहीत किया जाएगा।

switch ($NumberFormat) { {$_ -lt 4} {$Suffix = '$(g 10)$(g 10)$(g 10)$(g 10)'} 4 { switch ($Prefix) { '(800) 555' {$Suffix = '0199'} default {$Suffix = '01$(g 10)$(g 10)'} } } }

555 नंबरों के विशेष नियमों के कारण, हम अपनी लिपि बनाने वाले प्रत्येक फोन नंबर के अंत के लिए केवल चार यादृच्छिक अंक नहीं बना सकते हैं। तो, पहला स्विच यह देखने के लिए जांच करता है कि क्या हम 555 नंबर से निपट रहे हैं। यदि नहीं, तो यह चार यादृच्छिक अंक उत्पन्न करता है। यदि यह 555 नंबर है, तो 800 स्विच कोड के लिए दूसरा स्विच चेक करता है।यदि वह मेल खाता है, तो हम केवल एक मान्य $ प्रत्यय का उपयोग कर सकते हैं। अन्यथा, इसे 0100-0199 के बीच कुछ भी लेने की अनुमति है।

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

अब, यह आउटपुट के लिए समय है।

Write-Output '$FirstName $Surname $Prefix-$Suffix' }

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

नीचे से बंद होने वाला ब्रैकेट पहले से फॉरएच-ऑब्जेक्ट लूप का अंत है - अगर आप इसे पहले ही प्राप्त कर चुके हैं तो इसे छोड़ दें।

भाग 5: स्क्रिप्ट और स्क्रिप्ट चलाना

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

Remove-Item alias:g Remove-Variable ScriptFolder,RequiredFiles,Surname,Male,FirstName,NumberFormat,Prefix,Suffix,ValidInput,UserInput

इसे पूरा करने के बाद, स्क्रिप्ट को ".ps1" एक्सटेंशन के साथ उसी फ़ोल्डर में सहेजें, जैसे आपकी नाम फाइलें। सुनिश्चित करें कि आपका निष्पादन नीति सेट है ताकि स्क्रिप्ट चल सके, और इसे एक घुमाव दे।

कार्रवाई में स्क्रिप्ट का एक स्क्रीनशॉट यहां दिया गया है:

आप नीचे दिए गए लिंक से, इस PowerShell स्क्रिप्ट और नाम सूचियों वाली टेक्स्ट फ़ाइलों वाली एक ज़िप फ़ाइल भी डाउनलोड कर सकते हैं।
आप नीचे दिए गए लिंक से, इस PowerShell स्क्रिप्ट और नाम सूचियों वाली टेक्स्ट फ़ाइलों वाली एक ज़िप फ़ाइल भी डाउनलोड कर सकते हैं।

PowerShell के लिए यादृच्छिक नाम और फोन नंबर जेनरेटर

सिफारिश की: