If-Koubou

Cara Menghasilkan Nama Acak & Nomor Telepon dengan PowerShell

Cara Menghasilkan Nama Acak & Nomor Telepon dengan PowerShell (Bagaimana caranya)

Ketika Anda membutuhkan satu set data untuk pengujian atau demonstrasi, dan set yang perlu untuk mewakili Informasi Identitas Pribadi (PII), Anda biasanya tidak ingin menggunakan data nyata yang mewakili orang-orang yang sebenarnya. Di sini, kami akan memandu Anda melalui cara menggunakan PowerShell untuk membuat daftar nama acak dan nomor telepon untuk kejadian seperti itu.

Apa yang kau butuhkan

Sebelum memulai, ada beberapa alat dan informasi yang harus Anda miliki:

PowerShell

Skrip ini dikembangkan menggunakan PowerShell 4.0, dan juga telah diuji kompatibilitasnya dengan PowerShell 2.0. PowerShell 2.0 atau yang lebih baru telah di-built-in ke Windows sejak Windows 7. Ini juga tersedia untuk Windows XP dan Vista sebagai bagian dari Kerangka Manajemen Windows (WMF). Beberapa rincian lebih lanjut, dan tautan untuk unduhan, ada di bawah.

  • PowerShell 2.0 hadir dengan pengguna Windows 7. Windows XP SP3 dan Vista (SP1 atau lebih baru) dapat mengunduh versi WMF yang sesuai dari Microsoft di KB968929. Itu tidak didukung pada XP SP2 atau di bawah, atau Vista tanpa SP1.
  • PowerShell 4.0 hadir dengan Windows 8.1. Pengguna Windows 7 SP1 dapat meng-upgrade ke sana sebagai bagian dari pembaruan WMF dari Pusat Unduhan Microsoft. Ini tidak tersedia untuk XP atau Vista.

Nama-nama

Anda akan membutuhkan beberapa daftar nama untuk dimasukkan ke generator acak. Sumber yang bagus untuk a banyak nama, dan informasi mengenai popularitas mereka (meskipun itu tidak akan digunakan untuk skrip ini), adalah Biro Sensus Amerika Serikat. Daftar yang tersedia di tautan di bawah ini sangat besar, jadi Anda mungkin ingin memangkasnya sedikit jika Anda berencana untuk menghasilkan banyak nama dan angka sekaligus. Pada sistem pengujian kami, masing-masing pasangan nama / nomor membutuhkan waktu sekitar 1,5 detik untuk menghasilkan menggunakan daftar lengkap tetapi jarak tempuh Anda akan bervariasi tergantung pada spesifikasi sistem Anda sendiri.

  • Nama keluarga
  • Nama Pria Pertama
  • Nama Pertama Wanita

Terlepas dari sumber yang Anda gunakan, Anda akan perlu menghasilkan tiga file teks yang skrip dapat digunakan sebagai kumpulan untuk pemilihan namanya. Setiap file hanya boleh memuat nama, dan hanya satu nama per baris. Ini harus disimpan dalam folder yang sama dengan skrip PowerShell Anda.

Surnames.txt harus berisi nama keluarga yang Anda inginkan skrip untuk dipilih. Contoh:

Smith Johnson Williams Jones Brown

Males.txt harus berisi nama depan laki-laki yang Anda inginkan skrip untuk dipilih. Contoh:

James John Robert Michael William

Females.txt harus berisi nama depan wanita yang Anda inginkan dari skrip yang dipilih. Contoh:

Mary Patricia Linda Barbara Elizabeth

Aturan untuk Nomor Telepon

Jika Anda ingin memastikan nomor telepon Anda tidak cocok dengan nomor telepon siapa pun, cara termudah adalah dengan menggunakan Kode Exchange “555” yang terkenal. Tetapi jika Anda akan menampilkan kumpulan data dengan banyak nomor telepon, 555 akan mulai terlihat sangat cepat monoton. Untuk membuat hal-hal lebih menarik, kami akan menghasilkan nomor telepon lain yang melanggar aturan North American Numbering Plan (NANP). Di bawah ini adalah beberapa contoh nomor telepon tidak valid, mewakili setiap kelas angka yang akan dihasilkan oleh skrip ini:

  • (157) 836-8167
    Nomor ini tidak valid karena Kode Area tidak dapat dimulai dengan angka 1 atau 0.
  • (298) 731-6185
    Nomor ini tidak valid karena NANP tidak menugaskan kode area dengan 9 sebagai digit kedua.
  • (678) 035-7598
    Nomor ini tidak valid karena Kode Pertukaran tidak dapat dimulai dengan angka 1 atau 0.
  • (752) 811-1375
    Nomor ini tidak valid karena Kode Pertukaran tidak dapat diakhiri dengan dua 1s.
  • (265) 555-0128
    Nomor ini tidak valid karena Kode Exchange adalah 555, dan ID Pelanggan berada dalam rentang yang dicadangkan untuk nomor fiktif.
  • (800) 555-0199
    Nomor ini adalah satu-satunya nomor 800 dengan Kode Exchange 555 yang dicadangkan untuk digunakan sebagai nomor fiktif.

Perhatikan bahwa aturan di atas dapat berubah dan dapat berbeda menurut yurisdiksi. Anda harus melakukan penelitian Anda sendiri untuk memverifikasi aturan saat ini yang berlaku untuk lokal di mana Anda akan menghasilkan nomor telepon.

Perintah umum

Ada beberapa perintah umum yang akan digunakan di seluruh skrip ini, jadi Anda harus mendapatkan ide dasar tentang apa artinya ini sebelum kami benar-benar menulisnya.

  • ForEach-Object mengambil array, atau daftar, objek dan melakukan operasi yang ditentukan pada masing-masing. Dalam blok skrip ForEach-Object, variabel $ _ digunakan untuk merujuk pada item saat ini sedang diproses.
  • jika ... lain pernyataan memungkinkan Anda untuk melakukan operasi hanya jika kondisi tertentu terpenuhi, dan (opsional) menentukan apa yang harus dilakukan ketika kondisi tersebut tidak terpenuhi.
  • beralih pernyataan seperti jika pernyataan dengan lebih banyak pilihan. Switch akan memeriksa objek terhadap beberapa kondisi, dan menjalankan blok skrip apa pun yang ditentukan untuk kondisi yang cocok dengan objek. Anda juga dapat, secara opsional, menentukan blok default yang hanya akan berjalan jika tidak ada ketentuan lain yang cocok. Beralih pernyataan juga menggunakan variabel $ _ untuk merujuk ke item saat ini sedang diproses.
  • sementara pernyataan memungkinkan Anda untuk terus mengulangi blok skrip selama suatu kondisi tertentu terpenuhi. Setelah sesuatu terjadi yang menyebabkan kondisi tidak lagi benar ketika blok skrip selesai, loop keluar.
  • coba tangkap pernyataan membantu dengan penanganan kesalahan. Jika ada yang salah dengan blok skrip yang ditentukan untuk dicoba, blok tangkap akan berjalan.
  • Dapatkan-Konten melakukan apa yang tertulis di kaleng itu. Ia mendapat isi dari objek tertentu - biasanya sebuah file. Ini dapat digunakan untuk menampilkan isi file teks di konsol atau, seperti pada skrip ini, berikan isinya sepanjang pipa untuk digunakan dengan perintah lain.
  • Penulis Tulis menempatkan barang di konsol.Ini digunakan untuk menyajikan pesan kepada pengguna, dan tidak termasuk dalam output skrip jika output dialihkan.
  • Keluaran Tulis sebenarnya menghasilkan output. Biasanya, ini dibuang ke konsol tetapi juga dapat diarahkan oleh perintah lain.

Ada perintah lain dalam skrip, tetapi kami akan menjelaskannya ketika kami pergi.

Membangun Script

Sekarang saatnya untuk membuat tangan kita kotor.

Bagian 1: Persiapan Siap

Jika Anda menyukai skrip Anda untuk mulai berjalan dari konsol bersih, inilah baris pertama yang Anda inginkan di dalamnya.

Clear-Host

Sekarang setelah kita memiliki layar yang bersih, hal berikutnya yang ingin kita lakukan adalah memiliki pemeriksaan skrip untuk memastikan semua yang dibutuhkan ada di tempat. Untuk melakukan itu, kita perlu mulai dengan memberi tahu di mana harus mencari, dan apa yang harus dicari.

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

Baris pertama di sana sangat berguna untuk skrip apa pun. Ini mendefinisikan variabel yang menunjuk ke folder yang berisi skrip. Ini penting jika skrip Anda memerlukan file lain yang berada di direktori yang sama dengan dirinya (atau jalur relatif yang dikenal dari direktori itu), karena Anda akan mengalami kesalahan jika dan ketika Anda mencoba menjalankan skrip saat berada di skrip lain. direktori kerja.

Baris kedua membuat larik nama file yang diperlukan agar skrip dapat berjalan dengan baik. Kami akan menggunakan ini, bersama dengan variabel $ ScriptFolder, di bagian selanjutnya di mana kami memeriksa untuk memastikan file-file itu ada.

$ RequiredFiles | ForEach-Object if (! (Test-Path "$ ScriptFolder \ $ _")) Tulis-Host "$ _ tidak ditemukan." -ForegroundColor Red $ MissingFiles ++

Potongan skrip ini mengirimkan array $ RequiredFiles ke dalam blok ForEach-Object. Di dalam blok skrip itu, pernyataan if menggunakan Test-Path untuk melihat apakah file yang kita cari adalah tempatnya. Test-Path adalah perintah sederhana yang, ketika diberi jalur file, mengembalikan respons dasar benar atau salah untuk memberi tahu kami jika jalur menunjuk ke sesuatu yang ada. Tanda seru di sana adalah a tidak operator, yang membalikkan respon Test-Path sebelum meneruskannya ke pernyataan if. Jadi, jika Test-Path menghasilkan false (yaitu, file yang kita cari tidak ada), maka akan dikonversi menjadi true sehingga pernyataan if akan mengeksekusi blok skripnya.

Hal lain yang perlu diperhatikan di sini, yang akan sering digunakan dalam skrip ini, adalah penggunaan tanda kutip ganda dan bukan tanda kutip tunggal. Ketika Anda memasukkan sesuatu dalam tanda kutip tunggal, PowerShell memperlakukannya sebagai string statis. Apa pun yang ada dalam tanda kutip tunggal akan diteruskan secara persis apa adanya. Kutipan ganda memberi tahu PowerShell untuk menerjemahkan variabel dan beberapa item khusus lainnya dalam string sebelum meneruskannya. Di sini, tanda kutip ganda berarti bahwa alih-alih berlari Test-Path '$ ScriptFolder \ $ _' kita sebenarnya akan melakukan sesuatu yang lebih seperti Test-Path 'C: \ Scripts \ Surnames.txt' (Asumsikan skrip Anda ada di C: \ Scripts, dan ForEach-Object saat ini bekerja pada 'Surnames.txt').

Untuk setiap file tidak ditemukan, Tulis-Host akan memposting pesan kesalahan berwarna merah untuk memberi tahu Anda file mana yang hilang. Kemudian ia menambahkan variabel $ MissingFiles yang akan digunakan di bagian berikutnya, ke kesalahan dan berhenti jika ada file yang hilang.

if ($ MissingFiles) Write-Host "Tidak dapat menemukan file sumber $ MissingFiles (s). Aborting script." -ForegroundColor Red Remove-Variable ScriptFolder, RequiredFiles, MissingFiles Exit

Berikut ini trik lain yang bisa Anda lakukan dengan pernyataan if. Kebanyakan panduan yang akan Anda lihat jika pernyataan akan meminta Anda menggunakan operator untuk memeriksa kondisi yang cocok. Misalnya, di sini kita bisa menggunakan if ($ MissingFiles -gt 0) untuk melihat apakah $ MissingFiles lebih besar dari nol. Namun, jika Anda sudah menggunakan perintah yang mengembalikan nilai boolean (seperti di blok sebelumnya di mana kami menggunakan Test-Path) itu tidak diperlukan. Anda juga dapat melakukannya tanpa hal-hal seperti ini, ketika Anda hanya menguji untuk melihat apakah suatu angka tidak nol. Setiap nomor bukan nol (positif atau negatif) diperlakukan sebagai benar, sementara nol (atau, seperti yang mungkin terjadi di sini, variabel tidak ada) akan dianggap salah.

Jika $ MissingFiles ada, dan tidak nol, Penulis Tulis akan memposting pesan yang memberi tahu Anda berapa banyak file yang hilang dan skrip akan dibatalkan. Kemudian, Hapus-Variabel akan membersihkan semua variabel yang telah kita buat dan Keluar akan keluar dari skrip. Pada konsol PowerShell biasa, Remove-Variable tidak benar-benar diperlukan untuk tujuan khusus ini karena variabel yang diatur oleh skrip biasanya dibuang ketika skrip keluar. Namun, PowerShell ISE berperilaku agak berbeda sehingga Anda mungkin ingin menyimpan ini jika Anda berencana menjalankan skrip dari sana.

Jika semuanya beres, skrip akan berlanjut. Satu lagi persiapan untuk membuat adalah alias yang akan kami senangi nantinya.

New-Alias ​​g Get-Random

Alias ​​digunakan untuk membuat nama pengganti untuk perintah. Ini dapat berguna untuk membantu kami berkenalan dengan antarmuka baru (misalnya: PowerShell memiliki alias bawaan seperti dir -> Get-ChildItem dan cat -> Dapatkan-Konten) atau untuk membuat referensi singkat untuk perintah yang sering digunakan. Di sini, kami sedang membuat sangat referensi singkat untuk Dapatkan-Acak perintah yang akan digunakan banyak kemudian.

Get-Random cukup banyak melakukan apa namanya. Mengingat sebuah array (seperti daftar nama) sebagai input, ia mengambil item acak dari array dan mengeluarkannya. Ini juga dapat digunakan untuk menghasilkan angka acak.Hal yang perlu diingat tentang Get-Random dan angka adalah bahwa, seperti banyak operasi komputer lainnya, ia mulai menghitung dari nol. Jadi, bukannya Dapatkan-Acak 10 artinya semakin alami “berikan saya angka dari 1 hingga 10” itu benar-benar berarti “beri saya angka dari 0 hingga 9.” Anda bisa lebih spesifik tentang pemilihan angka, sehingga Get-Random berperilaku lebih seperti Anda alami harapkan, tetapi kita tidak membutuhkannya dalam skrip ini.

Bagian 2: Mendapatkan Masukan Pengguna dan Mulai Bekerja

Sementara skrip yang menghasilkan hanya satu nama & nomor telepon acak sangat bagus, jauh lebih baik jika skrip memungkinkan pengguna untuk menentukan berapa banyak nama & nomor yang ingin mereka dapatkan dalam satu batch. Sayangnya, kami tidak dapat benar-benar mempercayai pengguna untuk selalu memberi masukan yang valid. Jadi, ada sedikit lebih dari ini $ UserInput = Read-Host.

while (! $ ValidInput) coba [int] $ UserInput = Read-Host -Prompt 'Item yang akan dihasilkan' $ ValidInput = $ true tangkap Write-Host 'Input tidak valid. Masukkan angka saja. ' -ForegroundColor Red

Pernyataan sementara di atas memeriksa, dan meniadakan, nilai $ ValidInput. Selama $ ValidInput salah, atau tidak ada, itu akan terus berputar melalui blok skripnya.

Pernyataan coba mengambil masukan pengguna, melalui Read-Host, dan mencoba untuk mengubahnya menjadi nilai integer. (Itu adalah [int] sebelum Read-Host.) Jika berhasil, itu akan mengatur $ ValidInput menjadi true sehingga loop sementara dapat keluar. Jika tidak berhasil, blok tangkap memposting kesalahan dan, karena $ ValidInput tidak disetel, loop sementara akan kembali dan meminta pengguna lagi.

Setelah pengguna memberikan angka sebagai masukan, kami ingin skrip mengumumkan bahwa ini akan mulai benar-benar melakukan tugasnya dan kemudian melakukannya.

Tulis-Nama "'nGenerating $ UserInput nama & nomor telepon. Harap bersabar.'n" 1 ... $ UserInput | ForEach-Object 

Jangan khawatir, kami tidak akan meninggalkan Anda sendiri untuk mencari kode nama & nomor generator acak. Itu hanya komentar placeholder untuk menunjukkan Anda di mana bagian berikutnya (di mana pekerjaan yang sebenarnya dilakukan) akan cocok.

Baris Write-Host cukup mudah. Itu hanya mengatakan berapa banyak nama dan nomor telepon yang akan dihasilkan oleh skrip, dan meminta pengguna untuk bersabar sementara skrip melakukan tugasnya. Itu'ndi awal dan akhir string adalah menyisipkan baris kosong sebelum dan sesudah output itu, hanya untuk memberikan beberapa pemisahan visual antara baris input dan daftar nama & angka. Ketahuilah bahwa itu adalah back-tick (AKA "grave accent" - biasanya tombol di atas tab, di sebelah kiri 1) dan bukan tanda kutip atau satu kutipan di depan setiap n.

Bagian selanjutnya menunjukkan cara yang berbeda Anda dapat menggunakan loop ForEach-Object. Biasanya, ketika Anda ingin blok skrip dijalankan beberapa kali, Anda akan mengatur loop biasa seperti untuk ($ x = 1; $ x -le $ UserInput; $ x ++) .ForEach-Object memungkinkan kita menyederhanakan ini dengan memberinya daftar bilangan bulat dan, alih-alih mengatakannya untuk benar-benar melakukan apa pun dengan bilangan bulat tersebut, kami hanya memberikannya skrip skrip statis untuk dijalankan sampai ia kehabisan bilangan bulat untuk melakukannya.

Bagian 3: Menghasilkan Nama Acak

Menghasilkan nama adalah bagian paling sederhana dari sisa proses ini. Hanya terdiri dari tiga langkah: Memilih nama keluarga, memilih jenis kelamin, dan memilih nama depan. Ingat bahwa alias yang kami buat untuk Get-Random beberapa waktu lalu? Saatnya mulai menggunakannya.

  $ Surname = Dapatkan-Konten "$ ScriptFolder \ Surnames.txt" | g $ Male = g 2 if ($ Male) $ FirstName = Dapatkan-Konten "$ ScriptFolder \ Males.txt" | g else $ FirstName = Dapatkan-Konten "$ ScriptFolder \ Females.txt" | g

Baris pertama mengambil daftar nama keluarga kami, memasukkannya ke dalam pemetik acak, dan menetapkan nama yang dipilih menjadi $ Surname.

Baris kedua mengambil jenis kelamin seseorang. Ingat bagaimana Get-Random mulai menghitung dari nol, dan bagaimana nol salah dan yang lainnya benar? Begitulah cara kami menggunakan Dapatkan-Acak 2 (atau jauh lebih pendek g 2 terima kasih kepada alias kami - keduanya menghasilkan pilihan antara nol atau satu) untuk memutuskan apakah orang kami adalah laki-laki atau tidak. Pernyataan if / else setelah itu secara acak memilih nama depan pria atau wanita yang sesuai.

Bagian 4: Menghasilkan Nomor Telepon Acak

Inilah bagian yang sangat menyenangkan. Sebelumnya, kami menunjukkan kepada Anda bagaimana ada beberapa cara Anda dapat membuat nomor telepon yang tidak valid atau fiktif. Karena kami tidak ingin semua nomor kami terlihat terlalu mirip satu sama lain, kami akan secara acak memilih format angka yang tidak valid setiap saat. Format yang dipilih secara acak akan ditentukan oleh Kode Area dan Kode Pertukaran, yang secara kolektif akan disimpan sebagai $ Prefix.

  $ 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 "

Baris pertama adalah generasi bilangan acak langsung untuk memilih format yang akan kita ikuti untuk nomor telepon. Kemudian, pernyataan switch mengambil pilihan acak dan menghasilkan $ Prefix yang sesuai. Ingat bahwa daftar jenis nomor telepon tidak valid? Nilai $ NumberFormat 0-3 sesuai dengan empat pertama dalam daftar itu. Nilai 4 dapat menghasilkan salah satu dari dua yang terakhir, karena keduanya menggunakan Kode Pertukaran "555".

Di sini, Anda juga dapat melihat kami menggunakan trik lain dengan tanda kutip ganda.Kutipan ganda tidak hanya membiarkan Anda menafsirkan variabel sebelum string mendapat output - mereka juga membiarkan Anda memproses blok skrip. Untuk melakukan itu, Anda membungkus blok skrip seperti ini: “$()”. Jadi apa yang Anda miliki di atas adalah banyak digit yang diacak secara individual, dengan beberapa di antaranya terbatas dalam rentangnya atau diatur secara statis sesuai dengan aturan yang harus kita ikuti. Setiap string juga memiliki tanda kurung dan spasi seperti yang biasanya Anda harapkan untuk melihat dalam pasangan Kode Area dan Kode Exchange.

Hal terakhir yang perlu kita lakukan sebelum kita siap untuk mengeluarkan nama dan nomor telepon kita adalah untuk menghasilkan ID Pelanggan, yang akan disimpan sebagai $ Suffix.

  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)"

Karena aturan khusus untuk 555 angka, kita tidak bisa hanya menghasilkan empat digit acak untuk setiap akhir nomor telepon yang akan dibuat oleh skrip kami. Jadi, saklar pertama memeriksa untuk melihat apakah kita berurusan dengan nomor 555. Jika tidak, itu menghasilkan empat digit acak. Jika nomor 555, saklar kedua memeriksa kode area 800. Jika cocok, hanya ada satu Sufiks $ yang valid yang bisa kita gunakan. Jika tidak, diperbolehkan untuk memilih dari antara 0100-0199.

Perhatikan bahwa ada beberapa cara berbeda bahwa blok ini dapat ditulis, bukan seperti itu. Kedua pernyataan switch dapat diganti dengan pernyataan if / else, karena keduanya hanya menangani dua pilihan. Juga, bukannya secara khusus memanggil "4" sebagai opsi untuk pernyataan switch pertama, "default" bisa digunakan mirip dengan bagaimana hal itu dilakukan dalam yang kedua karena itu adalah satu-satunya pilihan yang tersisa. Pilihan antara if / else vs switch, atau di mana menggunakan kata kunci default, bukan nilai spesifik, sering kali bergantung pada masalah preferensi pribadi. Selama berfungsi, gunakan apa pun yang paling nyaman bagi Anda.

Sekarang saatnya untuk output.

  Tulis-Output "$ FirstName $ Surname $ Prefix- $ Suffix"

Yang ini cukup sederhana seperti yang ada di skrip. Ini hanya mengeluarkan nama depan dan belakang yang dipisahkan oleh spasi, lalu spasi lain sebelum nomor telepon. Di sinilah dasbor standar antara Kode Exchange dan ID Pelanggan akan ditambahkan juga.

Kurung tutup di bagian bawah adalah akhir loop ForEach-Object dari sebelumnya - hilangkan ini jika Anda sudah mendapatkannya.

Bagian 5: Bersihkan dan Menjalankan Naskah

Setelah semua pekerjaan selesai, skrip yang baik tahu cara membersihkannya sendiri. Sekali lagi, penghapusan variabel di bawah ini tidak benar-benar diperlukan jika Anda hanya akan menjalankan skrip dari konsol tetapi Anda akan menginginkannya jika Anda berencana untuk menjalankannya di ISE.

Hapus-Item alias: \ g Remove-Variable ScriptFolder, RequiredFiles, Nama Keluarga, Pria, NamaAnda, NomorFormat, Awalan, Akhiran, ValidInput, UserInput

Setelah Anda selesai, simpan skrip dengan ekstensi “.ps1” di folder yang sama dengan file nama Anda. Pastikan ExecutionPolicy Anda diatur agar skrip dapat berjalan, dan berikan berputar.

Berikut screenshot dari skrip yang beraksi:

Anda juga dapat mengunduh file ZIP yang berisi skrip PowerShell ini, dan file teks dengan daftar nama, dari tautan di bawah.

Nama Acak & Nomor Telepon Generator untuk PowerShell