10Sep
Kun tarvitset tietueet testaukseen tai esittelyyn, ja että joukon on osoitettava henkilökohtaisesti tunnistettavia tietoja( PII), et yleensä halua käyttää todellista tietoa, joka edustaa todellisia ihmisiä.Tässä käymme läpi, kuinka voit käyttää PowerShell-tietokantaa tuottamaan luettelon satunnaisista nimistä ja puhelinnumeroista juuri tällaiseen tilanteeseen.
Mitä tarvitset
Ennen kuin aloitat, tarvitset joitain työkaluja ja tietoja:
PowerShell
Tämä skripti on kehitetty PowerShell 4.0: n avulla, ja sitä on myös testattu yhteensopivuuden kanssa PowerShell 2.0: n kanssa. PowerShell 2.0 tai uudempi on asennettu Windowsiin Windows 7: n jälkeen. Se on saatavana myös Windows XP ja Vista osana Windows Management Framework( WMF) -järjestelmää.Joitakin yksityiskohtia ja ladattavia linkkejä ovat alla.
- PowerShell 2.0: n mukana tulee Windows 7. Windows XP SP3 ja Vista( SP1 tai uudempi) käyttäjät voivat ladata Microsoftin WMF-version Microsoft KB968929 -versiosta. Sitä ei tueta XP SP2: ssa tai sen alapuolella tai Vista ilman SP1: tä.
- PowerShell 4.0 mukana tulee Windows 8.1.Windows 7 SP1: n käyttäjät voivat päivittää sen osana WMF-päivitystä Microsoft Download Centeristä.Se ei ole käytettävissä XP: lle tai Vistalle.
Nimet
Tarvitset joitain nimiluetteloja, jotka syötetään satunnaislukijaan. Suuri lähde : n : n nimille ja niiden suosioon( vaikka sitä ei käytetä tässä skripti), on Yhdysvaltojen väestörekisteri. Alla oleviin linkkeihin saatavilla olevat luettelot ovat hyvin suuria, joten saatat haluta pienentää niitä hieman, jos aiot tuottaa paljon nimiä ja numeroita kerralla. Kokeilujärjestelmässämme kustakin nimestä / numeroparista kesti noin 1,5 sekuntia tuottamalla täydellisiä luetteloita, mutta mittarilukema vaihtelee omien järjestelmätietojen mukaan.
- Sukunimi
- Mies Ensisijaiset nimet
- Naisnimet
Riippumatta käyttämästäsi lähteestä, sinun on luotava kolme tekstitiedostoa, joita skripti voi käyttää nimikkeistönsä altaina. Jokaisen tiedoston pitäisi sisältää vain nimiä ja vain yksi nimi riviä kohden. Nämä on tallennettava samaan kansioon kuin PowerShell-skripti.
Surnames.txt : ssä on oltava sukunimet, joista haluat komentosarjasta valita. Esimerkki:
Smith Johnson Williams Jones BrownMales.txt : n pitäisi sisältää miesten etunimet, joista haluat komentosarjasta valita. Esimerkki:
James John Robert Michael WilliamFemales.txt pitäisi sisältää naispuoliset etunimet, joista haluat komentosarjasta valita. Esimerkki:
Mary Patricia Linda Barbara ElizabethPuhelinnumeroita koskevat säännöt
Jos haluat olla varma, että puhelinnumerosi eivät vastaa kenenkään todellista puhelinnumeroa, helpoin tapa on käyttää tunnettua "555" -vaihtoa. Mutta jos aiot näyttää joukon puhelinnumeroita, 555 alkaa näyttää melko yksitoikkoiselta todella nopeasti. Jotta asiat saataisiin mielenkiintoisemmiksi, luodaan muita puhelinnumeroita, jotka rikkovat Pohjois-Amerikan numerointisuunnitelmaa( NANP).Seuraavassa on muutamia näytteitä virheellisiä puhelinnumeroita, jotka edustavat jokaisen tämän koodin luomaa numeroaluetta:
- ( 157) 836-8167
Tämä numero on virheellinen, koska aluekoodit eivät voi alkaa 1 tai 0. - ( 298) 731-6185
Tämä numero on virheellinen, koska NANP ei osoita aluekoodeja 9: lla toisen numeronä. - ( 678) 035-7598
Tämä numero on virheellinen, koska Exchange Codes ei voi aloittaa 1 tai 0. - ( 752) 811-1375
Tämä numero on virheellinen, koska Exchange-koodit eivät voi päättyä kahteen 1s. - ( 265) 555-0128
Tämä numero on virheellinen, koska Exchange-koodi on 555, ja tilaajan tunnus on fiktiivisten numeroiden varassa. - ( 800) 555-0199
Tämä numero on ainoa 800 numero, jossa on 555 Exchange-koodi, joka on varattu käytettäväksi fiktiivisenä numerona.
Huomaa, että edellä mainitut säännöt voivat muuttua ja ne voivat vaihdella lainkäyttövalta mukaan. Sinun pitäisi tehdä oma tutkimus tarkistaa nykyiset säännöt, jotka ovat sovellettavissa paikallistoimintaan, jolle tuotavat puhelinnumeroita.
Yhteiset komennot
Tässä käsikirjassa käytetään melko yleisiä komentoja, joten sinun pitäisi saada perusajatus siitä, mitä nämä tarkoittavat, ennen kuin sukeltamme kirjoittamiseen.
- ForEach-objekti ottaa objektin taulukon tai luettelon ja suorittaa määritellyn toiminnon kussakin niistä.ForEach-Object-skripti-lohkon sisällä $ _-muuttujaa käytetään viittaamaan nykyiseen käsiteltävään kohteeseen.
- jos. .. muuten -lausekkeiden avulla voit suorittaa toimenpiteen vain, jos tietyt ehdot täyttyvät, ja( valinnaisesti) määrittää, mitä pitäisi tehdä, kun ehtoa ei täytetä.
- kytkin lausunnot ovat kuin jos lausunnot enemmän valintoja. Kytkin tarkistaa objektin useita ehtoja vastaan ja suorittaa mitä tahansa skriptioblokit määritellään olosuhteissa, jotka objekti vastaa. Voit myös valinnaisesti määrittää oletuslohkon, joka toimii vain, jos muita ehtoja ei ole sovitettu. Switch-lausekkeissa käytetään myös $ _ -muuttujaa viittaamaan käsiteltävään kohteeseen.
- ja -lausekkeiden avulla voit toistaa jatkuvasti komentotiedostoa niin kauan kuin tietyt ehdot täyttyvät. Kun jotain tapahtuu, jolloin ehto ei enää ole totta, kun komentosarja on päättynyt, silmukka poistuu.
- yrittää. .. saalis lausunnot auttaa virheenkäsittelyä.Jos jokin menee pieleen yrittäjälle määritetyn komentokeskuksen lohkon kanssa, catch block -ohjelma käynnistyy.
- Get-Content tekee mitä se sanoo tina. Se saa määritetyn objektin sisällön - tavallisesti tiedoston. Tätä voidaan käyttää näyttämään tekstitiedoston sisältö konsolissa tai, kuten tässä skripti, siirtää sisältö putkilinjaa pitkin käytettäväksi muiden komentoiden kanssa.
- -kirjoitussisustus tuo tavaraa konsoliin. Tätä käytetään esittämään viestejä käyttäjälle, eikä sitä ole sisällytetty komentosarjan lähdöön, jos ulostulo ohjataan.
- Write-Output tuottaa itse tuoton. Normaalisti tämä kopioidaan konsoliin, mutta se voidaan ohjata myös muilla komennoilla.
Komentosarjassa on muita komentoja, mutta selitämme niitä samalla kun menet.
Scriptin rakentaminen
Nyt on aika saada kätemme likaan.
Osa 1: Getting Ready to Go
Jos haluat, että käsikirjasi alkaa käydä puhtaasta konsolista, tässä on ensimmäinen rivi, jonka haluat.
Clear-HostNyt kun meillä on puhdas näyttö, seuraava asia, jonka haluamme tehdä, on saada komentosarja tarkistaa, että kaikki tarvitsevat on paikallaan. Tätä varten meidän on aloitettava kertomalla, mistä etsiä ja mitä etsiä.
$ ScriptFolder = Split-Path $ MyInvocation. MyCommand. Definition -Parent $ RequiredFiles =( 'Males.txt', 'Females.txt', 'Surnames.txt')Ensimmäinen rivi on erittäin hyödyllinen kaikille komentosarjoille. Se määrittää muuttujan, joka osoittaa komentosarjan sisältävän kansion. Tämä on välttämätöntä, jos käsikirjassasi tarvitaan muita tiedostoja, jotka sijaitsevat samassa hakemistossa kuin itse( tai tiedossa oleva suhteellinen polku kyseisestä hakemistosta), koska muuten kohdatte virheitä jos ja kun yrität suorittaa komentosarjan ollessasi toisessatyöhakemisto.
Toinen rivi luo sarjan tiedostonimiä, jotka tarvitaan komentosarjan suorittamiseen oikein. Käytämme tätä yhdessä $ ScriptFolder -muuttujan kanssa seuraavassa kappaleessa, jossa tarkistamme, että tiedostot ovat läsnä.
$ RequiredFiles |ForEach-Object{ if( !( Test-Path "$ ScriptFolder \ $ _")){ Kirjoita-isäntä "$ _ ei löytynyt."-ForegroundColor Red $ MissingFiles ++}}Tämä komentojoukko lähettää $ RequiredFiles-taulukon ForEach-objekti -lohkoon. Sellaisen komentorivin sisällä if-lausuma käyttää Test-Path-ohjelmaa nähdäksesi, etsitäänkö tiedosto, johon se kuuluu. Test-Path on yksinkertainen komento, joka antaa tiedostopolulle annetun perustieton tai väärä vastauksen kertoakseen, onko polku viittaa olemassa olevaan. Huutomerkki on eikä -operaattori, joka kääntää Test-Pathin vastauksen ennen kuin se välittää sen if-lauseen. Joten jos Test-Path palauttaa väärennetty( toisin sanoen etsimäsi tiedosto ei ole olemassa), se muuttuu oikeaksi, jotta if-lauseke suorittaisi sen script-lohkon.
Toinen huomaava asia, jota käytetään usein tässä käsikirjoituksessa, on kaksinkertaisen lainausmerkinnän käyttäminen yksittäisten lainausten sijaan. Kun laitat jotain yksittäisiin lainauksiin, PowerShell käsittelee sitä staattisena merkkijonoina. Mikä tahansa yksittäisissä lainauksissa, siirretään täsmälleen samalla tavalla. Double-quotes kertoo, että PowerShell kääntää muuttujat ja jotkut muut erikoismerkit merkkijonoon ennen sen kulkua. Tässä kaksinkertaiset lainausmerkit tarkoittavat, että Test-Path '$ ScriptFolder \ $ _' : n sijasta emme todellisuudessa tee jotain enemmän kuin Test-Path 'C: \ Scripts \ Surnames.txt' komentotiedosto on C: \ Scripts, ja ForEach-Object toimii parhaillaan 'Surnames.txt').
Kutakin tiedostoa ei löydy, Kirjoita-isäntä lähettää virheilmoituksen punaisella ja kertoo, mikä tiedosto puuttuu. Sitten se kasvattaa $ MissingFiles -muuttujaa, jota käytetään seuraavassa kappaleessa, virheeseen ja lopettamaan, jos tiedostoja puuttuu.
if( $ MissingFiles){ Kirjoita-isäntä "Ei löytynyt MissingFiles-lähdetiedostoa.-ForegroundColor Punainen Remove-Variable ScriptFolder, RequiredFiles, MissingFiles Poistu}Tässä on toinen siisti temppu, jota voit tehdä, jos lausunnot. Useimmissa oppaissa näet, jos lausunnot kertovat käytät operaattoria tarkistaaksesi yhteensopivuustilan. Esimerkiksi tässä voisimme käyttää jos( $ MissingFiles -gt 0) nähdä, onko $ MissingFiles suurempi kuin nolla. Jos käytät jo komentoja, jotka palauttavat boolean arvon( kuten edellisessä lohkossa, jossa käytimme Test-Polkua), jotka eivät ole välttämättömiä.Voit myös tehdä sen ilman tällaisia tapauksia, kun testaat vain, onko numero nollaton. Kaikki ei-nollanumerot( positiiviset tai negatiiviset) käsitellään oikeina, kun taas nolla( tai, kuten tässäkin tapauksessa, ei-olemassa olevaa muuttujaa) käsitellään vääriksi.
Jos $ MissingFiles on olemassa, ja se on ei-nolla, Write-Host lähettää viestin, joka kertoo kuinka monta tiedostoa puuttuu ja että komentotiedosto keskeytyy. Tällöin Poista-muuttuja puhdistaa kaikki luomasi muuttujat ja Exit lopettaa komentosarjan. Normaalissa PowerShell-konsolissa Poista-muuttujaa ei todellisuudessa tarvita tähän tarkoitukseen, koska komentosarjojen määrittämät muuttujat hylätään normaalisti, kun komentosarja poistuu. PowerShell ISE kuitenkin käyttäytyy hieman eri tavalla, joten voit halutessasi pitää tämän sisään, jos suunnittelet komentosarjan käynnistystä sieltä.
Jos kaikki asiat ovat kunnossa, komentosarja jatkuu. Yksi valmistautuminen on alias, että olemme todella iloisia myöhemmin.
Uusi-Alias g Get-Satunnaiset-aliakset käytetään luomaan vaihtoehtoisia nimiä komennoille. Nämä voivat olla hyödyllisiä, jotta voimme tutustua uuteen käyttöliittymään( esim. PowerShellillä on sisäänrakennetut aliakset, kuten dir - & gt; Get-ChildItem ja cat - & gt; Get-Content ) tai lyhytaikaiset viitteetyleisesti käytettyjä komentoja varten. Tässä teemme : n erittäin -lyhyen käsin Get-Random -komennolle, jota aiotaan käyttää paljon myöhemmin.
Get-Satunnainen melko paljon tekee, mitä sen nimi merkitsee. Koska taulukko( kuten nimiluettelo) syötteeksi, se valitsee satunnaisen kohteen taulukosta ja pureskelee sen. Sitä voidaan myös käyttää satunnaislukujen tuottamiseen. Muistettavaa Get-Randomista ja numeroista on kuitenkin se, että kuten monet muut tietokonetoiminnot, se alkaa laskea nollasta. Joten sijasta Get-Random 10 sijasta luonnollisempi "anna minulle numero 1-10" se todella tarkoittaa "anna minulle numero 0. .. 9." Voit olla tarkempi numeroiden valinta, niin että Get-Random käyttäytyy enemmän kuin luonnollisesti olette, mutta emme tarvitse sitä tässä kirjoitusohjelmassa.
Osa 2: Getting User Input ja Getting to Work
Vaikka komentosarja, joka tuottaa vain yhden satunnaisen nimen &puhelinnumero on suuri, on paljon parempi, jos komentosarjan avulla käyttäjä voi määrittää, kuinka monta nimeä &numeroita, jotka he haluavat saada yhdessä erässä.Valitettavasti emme voi luottaa siihen, että käyttäjät voivat aina antaa kelvollisen syötteen. Joten, tässä on vähän enemmän kuin $ UserInput = Read-Host .
kun( ! $ ValidInput){ try{ [int] $ UserInput = Luo-Host -Prompt 'Luodut kohteet' $ ValidInput = $ true} catch{ Kirjoita-isäntä 'Virheellinen syöttö.Anna vain numero. "-ForegroundColor Red}}Kun taas yllä oleva lausuma tarkistaa ja mittaa $ ValidInput-arvon. Niin kauan kuin $ ValidInput on väärä tai sitä ei ole, se jatkaa silmukoitumista komentojononsa läpi.
Yritä lausunto ottaa käyttäjätulon Read-Hostin kautta ja yrittää muuttaa sen kokonaislukuarvoiksi.(Se on [int] ennen Read-Hostia.) Jos se onnistuu, se asettaa $ ValidInput: n oikeaksi niin, että samalla silmukka voi poistua. Jos ei onnistunut, catch block lähettää virhettä ja koska $ ValidInput ei ole asetettu, kun taas silmukka palaa takaisin ja kehottaa käyttäjää uudelleen.
Kun käyttäjä on asianmukaisesti antanut numeron syötteeksi, haluamme, että komentosarja ilmoittaa olevansa alkamassa itse tekemään työnsä ja sitten tekemään sen.
Kirjoita-host "` nYhteinen $ UserInput nimet ja puhelinnumerot. Ole kärsivällinen.`n "1. . $ UserInput |ForEach-Object{ & lt; # INSERT RANDOM NAME &NUMEROJENREATTORI TÄSTÄ # & gt;}Älä huoli, emme jätä sinua yksin selvittämään satunnainen nimi &numeron generaattorikoodi. Se on vain paikkamerkkikommentti, jossa näytetään, missä seuraavassa osassa( missä todellinen työ tehdään) on sovitettavissa.
Write-Host-rivi on melko suoraviivaista. Se kertoo yksinkertaisesti, kuinka monta nimeä ja puhelinnumeroita käsittelevä kirjoitusohjelma tuottaa ja pyytää käyttäjää kärsivällisyydestä, kun käsikirjoitus toimii. Merkkijonon alussa ja lopussa `n on sijoitettava tyhjä rivi ennen ja jälkeen kyseisen lähdön, jotta se antaisi jonkin verran visuaalista erottamista syöttölinjan ja nimiluettelon &numeroita. Ole tietoinen siitä, että kyseessä on selkeä rivi( AKA "vakava aksentti" - yleensä yläpuolella oleva välilehti, vasemmalla puolella 1), eikä kukin aakkosto tai yksittäinen lainaus jokaisen n edessä.
Seuraava osa näyttää erilaisen tavan käyttää ForEach-objekti-silmukkaa. Tyypillisesti, kun haluat, että komentosarjatiedostoa käytetään tietty määrä kertoja, määrität säännöllisen silmukan, kuten ( $ x = 1; $ x -le $ UserInput; $ x ++){ & lt; # INSERT SCRIPTTÄSTÄ # & gt;}. ForEach-Object avulla voimme yksinkertaistaa tätä syöttämällä sen kokonaislukujen joukosta ja sen sijaan, että kerromme sen suorittavan itse mitään näiden kokonaislukujen kanssa, annamme sille vain staattisen komentosarjan, kunnes se loppuu kokonaislukuina sen tekemiseksi.
Osa 3: Satunnaisen nimen luominen
Nimen tuottaminen on yksinkertaisin bitti tämän prosessin loppuosasta. Se koostuu kolmesta vaiheesta: sukunimen ottamisesta, sukupuolen valitsemisesta ja etunimen valitsemisesta. Muista, että ali-merkki, jonka teimme Get-Randomille jonkin aikaa takaisin? Aika alkaa käyttää sitä.
$ Sukunimi = Get-Content "$ ScriptFolder \ Surnames.txt" |g $ Mies = g 2 if( $ mies){ $ FirstName = Get-Content "$ ScriptFolder \ Males.txt" |g} else{ $ FirstName = Hae-sisältö "$ ScriptFolder \ Females.txt" |g}Ensimmäinen rivi ottaa sukunimeä koskevan luettelon, syöttää sen satunnaisvalitsimeen ja antaa valitun nimen $ Sukunimi.
Toinen rivi valitsee henkilön sukupuolemme. Muista, kuinka Get-Random alkaa laskea nollasta ja kuinka nolla on väärä ja kaikki muu on totta? Näin käytämme Get-Random 2 ( tai paljon lyhyempi g 2 kiitos aliaksemme - molemmat johtavat valintaan nollasta tai yhdestä) päättää, onko meidän henkilö mies vai ei. If / else-lauseen jälkeen satunnaisesti valitsee mies- tai naispuolisen etunimen vastaavasti.
Osa 4: Satunnaisen puhelinnumeron luominen
Tässä on todella hauska osa. Aikaisemmin näytimme sinulle, miten on useita tapoja, joilla voit tehdä virheellisen tai fiktiivisen puhelinnumeron. Koska emme halua, että kaikki numerot näyttävät liian samanlaisilta toisiinsa, valitamme satunnaisesti virheellisen numeromuodon joka kerta. Satunnaisesti valitut tiedostomuodot määritellään niiden aluekoodilla ja Exchange-koodilla, jotka tallennetaan yhteisesti $ Prefixiksi.(G 10) $( g 10)) $( g 10) $( g 10) $( g 10) $( g 10) $( g 10) $( g 10) $( g 10)($ 10) $( g 10) $( g 10) ${ $ Prefix = "($( g 10)) ${ $ Prefix =$( g 10) $( g 10) $( g 10)) $( g 2) $( g 10) $( g 10) "} 3{ $ Prefix =) $( g 10) 11 "} 4{ $ Prefix ="( $ 10) $( g 10) $( g 10)) 555 "}}
Ensimmäinen rivi on suoraviivainen satunnaisluku,seuraamme puhelinnumeroa. Sitten kytkinlausunto ottaa satunnaisen valinnan ja luo $ etuliitteen vastaavasti. Muista, että luettelo virheellisistä puhelinnumeroista on?$ NumberFormat-arvot 0-3 vastaavat ensimmäisiä neljää luettelossa. Arvo 4 voi luoda yhden viimeisestä kahdesta, koska molemmat käyttävät "555" -vaihtoehtoa.
Tässä näet myös, että käytämme jotain muuta kakkospyyntöä.Kaksoiskutsuilla ei vain anna tulkita muuttujia ennen merkkijonon tuottamista - ne myös antavat sinun käsitellä käsikirjoituslohkoja. Voit tehdä tämän seuraavasti: "$( & lt; #SCRIPT HERE # & gt;)" .Joten, mitä olet edellä, on paljon yksilöllisesti satunnaistettuja numeroita, jotkut heistä joko rajoitettu niiden alueelle tai asettaa staattisesti mukaan sääntöjä meidän on noudatettava. Jokaisella merkkijonolla on myös sulkeja ja välilyöntejä, kuten normaalisti oletat näkyvän aluekoodi ja Exchange-koodin parissa.
Viimeinen asia, jonka on tehtävä ennen kuin olemme valmiita tuottamaan nimemme &puhelinnumero muodostaa tilaajan tunnuksen, joka tallennetaan $ suffiksiksi.
-kytkin( $ NumberFormat){ {$ _ -lt 4}{ $ Suffix = "$( g 10) $( g 10) $( g 10) $( g 10)"} 4{ (800) 555 '{$ Suffix =' 0199 '} oletusarvo{ $ Suffix = "01 $( g 10) $( g 10)"}}}}555 numeroiden erityissääntöjen vuoksi emme voi vainluo neljä satunnaislukua kunkin puhelinnumeron loppuun, jonka skripti tulee tekemään. Joten ensimmäinen kytkin tarkistaa, onko meillä 555-numero. Jos ei, se luo neljä satunnaislukua. Jos se on 555-numero, toinen kytkin tarkistaa 800-aluekoodin. Jos se sopii yhteen, voimme käyttää vain yhtä voimassa olevaa $ Suffixia. Muussa tapauksessa se voi valita minkä tahansa välillä 0100-0199.
Huomaa, että tämä lohko olisi voinut olla kirjoitettu muutamia eri tapoja sen sijasta, miten se on. Molemmat kytkin-lausunnot olisivat voineet korvata if / else-lauselmilla, koska ne käsittelevät vain kahta valintaa. Lisäksi, sen sijaan, että kutsuttiin "4" ensimmäisen vaihtoehdon vaihtoehtona, "oletusarvoa" olisi voitu käyttää samanlaisena kuin se tapahtui toisessa vaiheessa, koska se oli ainoa vaihtoehto jäljellä.Jos valitset vaihtoehdon if / else vs. switch tai jos haluat käyttää oletushaluisia avainsanoja tiettyjen arvojen sijasta, se tulee usein henkilökohtaiseen mieltymykseen. Niin kauan kuin se toimii, käytä mitä tahansa mukavinta.
Nyt on aika lähteä.
Write-Output "$ FirstName $ Sukunimi $ Prefix- $ suffix"}Tämä on melko yksinkertainen kuin se saa komentosarjassa. Se tuottaa vain etu- ja sukunimen, jotka on erotettu välilyönnillä, sitten toinen tila ennen puhelinnumeroa. Tällöin myös Exchange-koodin ja tilaaja-ID: n välinen tavallinen viiva lisätään.
Se sulkeutuva kannatin alareunassa on ForEach-objektiivin silmukan loppu aikaisemmin - älä jätä tätä, jos olet jo saanut sen.
Osa 5: Scriptin puhdistaminen ja suorittaminen
Kun kaikki työ on tehty, hyvä käsikirjoitus osaa puhdistaa itsensä.Jälleen muuttuvaa poistoa ei tarvita, jos vain ajetaan käsikirjoitus konsolista, mutta haluat sen, jos aiot suunnitella sitä ISE: ssä.
Remove-Item alias: \ g Poista-muuttuvien komentotiedostojen, pakollisten tiedostojen, sukunimi, mies, etunimi, numeroformaatti, etuliite, suffix, ValidInput, UserInputKun olet saanut kaiken, tallenna käsikirjoitus ".ps1"samaan kansioon kuin nimitiedostot. Varmista, että ExecutionPolicy on asetettu niin, että komentosarja toimii ja antaa sille pyörteen.
Tässä on kuvakaappaus komentosarjasta toiminnassa:
Voit myös ladata tämän PowerShell-komentosarjan sisältävän ZIP-tiedoston ja tekstitiedostot nimiluettelosta alla olevasta linkistä.
satunnainen nimi &PowerShell
puhelinnumeroiden generaattori