Những gì bạn cần
Trước khi bắt đầu, có một số công cụ và thông tin bạn cần có:
PowerShell
Kịch bản này được phát triển bằng PowerShell 4.0 và cũng đã được thử nghiệm để tương thích với PowerShell 2.0. PowerShell 2.0 hoặc mới hơn đã được tích hợp sẵn trong Windows kể từ Windows 7. Nó cũng có sẵn cho Windows XP và Vista như một phần của Windows Management Framework (WMF). Một số chi tiết khác và liên kết để tải xuống, bên dưới.
- PowerShell 2.0 đi kèm với Windows 7. Người dùng Windows XP SP3 và Vista (SP1 trở lên) có thể tải xuống phiên bản WMF thích hợp từ Microsoft trong KB968929. Nó không được hỗ trợ trên XP SP2 hoặc thấp hơn, hoặc Vista không có SP1.
- PowerShell 4.0 đi kèm với Windows 8.1. Người dùng Windows 7 SP1 có thể nâng cấp lên nó như là một phần của bản cập nhật WMF từ Trung tâm Tải xuống của Microsoft. Nó không có sẵn cho XP hoặc Vista.
Tên
Bạn sẽ cần một số danh sách tên để đưa vào trình tạo ngẫu nhiên. Một nguồn tuyệt vời cho một nhiều tên và thông tin về mức độ phổ biến của chúng (mặc dù điều đó sẽ không được sử dụng cho tập lệnh này), là Cục điều tra dân số Hoa Kỳ. Danh sách có sẵn tại các liên kết dưới đây rất lớn, vì vậy bạn có thể muốn cắt bớt chúng xuống một chút nếu bạn có kế hoạch tạo nhiều tên và số cùng một lúc. Trên hệ thống thử nghiệm của chúng tôi, mỗi cặp tên / số mất khoảng 1,5 giây để tạo ra bằng cách sử dụng danh sách đầy đủ nhưng số dặm của bạn sẽ khác nhau tùy thuộc vào thông số kỹ thuật hệ thống của riêng bạn.
- Họ
- Nam Tên đầu tiên
- Tên nữ đầu tiên
Bất kể nguồn bạn sử dụng, bạn sẽ cần tạo ba tệp văn bản mà tập lệnh có thể sử dụng làm các nhóm để chọn tên của nó. Mỗi tệp chỉ nên chứa tên và chỉ có một tên trên mỗi dòng. Chúng cần được lưu trữ trong cùng thư mục với tập lệnh PowerShell của bạn.
Surnames.txt nên chứa họ bạn muốn tập lệnh để chọn. Thí dụ:
Smith Johnson Williams Jones Brown
Males.txt nên chứa các tên nam đầu tiên bạn muốn tập lệnh để chọn. Thí dụ:
James John Robert Michael William
Females.txt nên chứa các tên nữ đầu tiên bạn muốn tập lệnh để chọn. Thí dụ:
Mary Patricia Linda Barbara Elizabeth
Quy tắc cho số điện thoại
Nếu bạn muốn đảm bảo số điện thoại của mình không khớp với số điện thoại thực của bất kỳ ai, cách dễ nhất là sử dụng Mã trao đổi “555” nổi tiếng. Nhưng nếu bạn định hiển thị một tập dữ liệu với nhiều số điện thoại, 555 sẽ bắt đầu trông khá đơn điệu thật nhanh. Để làm cho mọi thứ thú vị hơn, chúng tôi sẽ tạo các số điện thoại khác vi phạm các quy tắc về Kế hoạch đánh số (NANP) của Bắc Mỹ. Dưới đây là một số mẫu điện thoại không hợp lệ, đại diện cho từng loại số sẽ được tạo bởi tập lệnh này:
- (157) 836-8167 Số này không hợp lệ vì Mã Vùng không thể bắt đầu bằng 1 hoặc 0.
- (298) 731-6185 Số này không hợp lệ vì NANP không chỉ định mã vùng với 9 là chữ số thứ hai.
- (678) 035-7598 Số này không hợp lệ vì mã Exchange không thể bắt đầu bằng 1 hoặc 0.
- (752) 811-1375 Số này không hợp lệ vì Mã Exchange không thể kết thúc bằng hai giây.
- (265) 555-0128 Số này không hợp lệ vì Mã Exchange là 555, và ID người đăng ký nằm trong phạm vi dành riêng cho số hư cấu.
- (800) 555-0199 Số này là số 800 duy nhất có Mã số 555 được dành riêng để sử dụng làm số giả định.
Lưu ý rằng các quy tắc trên có thể thay đổi và có thể thay đổi theo thẩm quyền. Bạn nên làm nghiên cứu của riêng bạn để xác minh các quy tắc hiện hành được áp dụng cho ngôn ngữ mà bạn sẽ tạo ra số điện thoại.
Các lệnh chung
Có một số lệnh khá phổ biến sẽ được sử dụng trong suốt tập lệnh này, vì vậy bạn nên có ý tưởng cơ bản về ý nghĩa của những điều này trước khi chúng ta đi sâu vào thực sự viết nó.
- ForEach-Object lấy một mảng hoặc danh sách các đối tượng và thực hiện thao tác được chỉ định trên mỗi đối tượng. Trong khối tập lệnh ForEach-Object, biến $ _ được sử dụng để chỉ mục hiện đang được xử lý.
- nếu khác các câu lệnh cho phép bạn thực hiện một thao tác chỉ khi một số điều kiện nhất định được đáp ứng, và (tùy chọn) chỉ định những gì nên được thực hiện khi điều kiện đó không được đáp ứng.
- công tắc điện các câu lệnh giống như các câu lệnh có nhiều lựa chọn hơn. Switch sẽ kiểm tra một đối tượng chống lại một số điều kiện và chạy bất kỳ khối tập lệnh nào được chỉ định cho các điều kiện mà đối tượng phù hợp. Bạn cũng có thể tùy ý chỉ định một khối mặc định sẽ chỉ chạy nếu không có điều kiện nào khác được khớp. Các câu lệnh chuyển đổi cũng sử dụng biến $ _ để chỉ mục hiện đang được xử lý.
- trong khi báo cáo cho phép bạn liên tục lặp lại một khối tập lệnh miễn là đáp ứng một điều kiện nhất định. Khi điều gì đó xảy ra khiến cho điều kiện không còn đúng nữa khi khối tập lệnh hoàn tất, vòng lặp thoát ra.
- cố gắng bắt báo cáo giúp xử lý lỗi. Nếu bất kỳ điều gì sai với khối tập lệnh được chỉ định để thử, khối catch sẽ chạy.
- Có được nội dung Liệu những gì nó nói trên tin.Nó nhận nội dung của một đối tượng được chỉ định - thường là một tệp. Điều này có thể được sử dụng để hiển thị nội dung của một tệp văn bản tại bàn điều khiển hoặc, như trong tập lệnh này, truyền nội dung dọc theo đường ống để sử dụng với các lệnh khác.
- Máy chủ lưu trữ đặt nội dung trong bảng điều khiển. Thông tin này được sử dụng để hiển thị thông báo cho người dùng và không được đưa vào đầu ra của tập lệnh nếu đầu ra được chuyển hướng.
- Viết đầu ra thực sự tạo ra đầu ra. Thông thường, điều này được bán cho bàn điều khiển nhưng nó cũng có thể được chuyển hướng bằng các lệnh khác.
Có các lệnh khác trong kịch bản, nhưng chúng tôi sẽ giải thích các câu lệnh đó khi chúng ta đi.
Xây dựng kịch bản
Bây giờ là lúc để chúng ta bị bẩn tay.
Phần 1: Chuẩn bị sẵn sàng để đi
Nếu bạn thích tập lệnh của mình để bắt đầu chạy từ một bảng điều khiển rõ ràng, đây là dòng đầu tiên bạn muốn.
Clear-Host
Bây giờ chúng ta có một màn hình sạch, điều tiếp theo chúng ta muốn làm là kiểm tra kịch bản để đảm bảo mọi thứ cần thiết. Để làm điều đó, chúng ta cần phải bắt đầu bằng cách nói cho nó nơi để tìm, và những gì cần tìm.
$ScriptFolder = Split-Path $MyInvocation.MyCommand.Definition -Parent $RequiredFiles = ('Males.txt','Females.txt','Surnames.txt')
Dòng đầu tiên rất hữu ích cho bất kỳ tập lệnh nào. Nó định nghĩa một biến trỏ đến thư mục chứa tập lệnh. Điều này là cần thiết nếu kịch bản của bạn cần các tệp khác nằm trong cùng thư mục với chính nó (hoặc đường dẫn tương đối đã biết từ thư mục đó), vì bạn sẽ gặp phải lỗi nếu và khi bạn cố gắng chạy tập lệnh trong khi bạn đang ở thư mục làm việc.
Dòng thứ hai tạo ra một loạt các tên tệp được yêu cầu cho tập lệnh chạy đúng cách. Chúng tôi sẽ sử dụng điều này, cùng với biến $ ScriptFolder, trong phần tiếp theo mà chúng tôi kiểm tra để đảm bảo rằng các tệp đó có mặt.
$RequiredFiles | ForEach-Object { if (!(Test-Path '$ScriptFolder$_')) { Write-Host '$_ not found.' -ForegroundColor Red $MissingFiles++ } }
Đoạn script này gửi mảng $ RequiredFiles vào khối ForEach-Object. Trong khối tập lệnh đó, câu lệnh if sử dụng Đường dẫn kiểm tra để xem liệu tệp chúng tôi đang tìm kiếm có phải là tệp nằm trong đó hay không. Test-Path là một lệnh đơn giản, khi được đưa ra một đường dẫn tệp, trả về một phản hồi đúng hoặc sai cơ bản để cho chúng tôi biết liệu đường dẫn có trỏ đến thứ gì đó tồn tại hay không. Dấu chấm than trong đó là không phải toán tử đảo ngược đáp ứng của đường dẫn kiểm tra trước khi chuyển nó tới câu lệnh if. Do đó, nếu Đường dẫn thử nghiệm trả về false (nghĩa là, tệp chúng tôi đang tìm kiếm không tồn tại), nó sẽ được chuyển thành true để câu lệnh if sẽ thực thi khối tập lệnh của nó.
Một điều cần lưu ý ở đây, mà sẽ được sử dụng thường xuyên trong kịch bản này, là việc sử dụng dấu ngoặc kép thay vì dấu nháy đơn. Khi bạn đặt một cái gì đó trong dấu nháy đơn, PowerShell coi nó là một chuỗi tĩnh. Bất cứ điều gì là trong các dấu nháy đơn sẽ được truyền theo chính xác như-là. Dấu ngoặc kép cho PowerShell dịch các biến và một số mục đặc biệt khác trong chuỗi trước khi truyền đi. Ở đây, dấu ngoặc kép có nghĩa là thay vì chạy Đường dẫn thử nghiệm ‘$ ScriptFolder $ _’ chúng tôi sẽ thực sự làm điều gì đó giống như Đường dẫn thử nghiệm ‘C: Scripts Surnames.txt’ (giả sử tập lệnh của bạn nằm trong C: Scripts và ForEach-Object hiện đang làm việc trên ‘Surnames.txt’).
Đối với mỗi tệp không được tìm thấy, Máy chủ lưu trữ sẽ đăng thông báo lỗi màu đỏ để cho bạn biết tệp nào bị thiếu. Sau đó, nó tăng biến $ MissingFiles sẽ được sử dụng trong phần tiếp theo, để lỗi và thoát nếu có bất kỳ tệp nào bị thiếu.
if ($MissingFiles) { Write-Host 'Could not find $MissingFiles source file(s). Aborting script.' -ForegroundColor Red Remove-Variable ScriptFolder,RequiredFiles,MissingFiles Exit }
Dưới đây là một mẹo nhỏ gọn khác mà bạn có thể thực hiện với các câu lệnh if. Hầu hết các hướng dẫn bạn sẽ thấy về các câu lệnh sẽ cho bạn biết sử dụng toán tử để kiểm tra điều kiện phù hợp. Ví dụ, ở đây chúng ta có thể sử dụng if ($ MissingFiles -gt 0) để xem $ MissingFiles có lớn hơn 0 không. Tuy nhiên, nếu bạn đã sử dụng các lệnh trả lại giá trị boolean (như trong khối trước mà chúng tôi đang sử dụng Đường dẫn thử nghiệm) không cần thiết. Bạn cũng có thể làm mà không có nó trong các trường hợp như thế này, khi bạn chỉ đang thử nghiệm để xem liệu một số có khác không. Bất kỳ số khác không (dương hoặc âm) được coi là đúng, trong khi 0 (hoặc, như có thể xảy ra ở đây, một biến không tồn tại) sẽ được coi là sai.
Nếu $ MissingFiles tồn tại và khác 0, Write-Host sẽ gửi một thông báo cho bạn biết có bao nhiêu tệp bị thiếu và tập lệnh sẽ hủy bỏ. Sau đó, Xóa biến sẽ dọn sạch tất cả các biến mà chúng tôi đã tạo và Thoát sẽ thoát khỏi tập lệnh. Tại bảng điều khiển PowerShell thông thường, Remove-Variable không thực sự cần thiết cho mục đích cụ thể này vì các biến được thiết lập bởi các script thường bị loại bỏ khi kịch bản thoát. Tuy nhiên, PowerShell ISE hoạt động hơi khác một chút, do đó bạn có thể muốn giữ nó trong nếu bạn định chạy script từ đó.
Nếu tất cả mọi thứ đều theo thứ tự, tập lệnh sẽ tiếp tục. Một sự chuẩn bị nữa để thực hiện là bí danh mà chúng tôi sẽ rất vui khi có sau này.
New-Alias g Get-Random
Bí danh được sử dụng để tạo tên thay thế cho các lệnh. Đây có thể hữu ích để giúp chúng tôi làm quen với giao diện mới (ví dụ: PowerShell có các bí danh tích hợp như dir -> Get-ChildItem và cat -> Get-Content) hoặc tạo tham chiếu ngắn gọn cho các lệnh thường được sử dụng. Ở đây, chúng tôi đang thực hiện rất tham chiếu ngắn tay cho Nhận ngẫu nhiên lệnh sẽ được sử dụng sau này.
Nhận được ngẫu nhiên khá nhiều những gì tên của nó ngụ ý. Cho một mảng (giống như một danh sách các tên) làm đầu vào, nó chọn một mục ngẫu nhiên từ mảng và nhổ nó ra. Nó cũng có thể được sử dụng để tạo ra các số ngẫu nhiên. Điều cần nhớ về Get-Random và số mặc dù là, giống như nhiều hoạt động máy tính khác, nó bắt đầu đếm từ số không. Vì vậy, thay vì Nhận ngẫu nhiên 10 có nghĩa là tự nhiên hơn “cho tôi một số từ 1 đến 10” nó thực sự có nghĩa là “cho tôi một số từ 0 đến 9.” Bạn có thể cụ thể hơn về lựa chọn số, để Get-Random hoạt động giống như bạn tự nhiên hơn mong đợi, nhưng chúng tôi sẽ không cần điều đó trong tập lệnh này.
Phần 2: Bắt đầu nhập của người dùng và bắt đầu công việc
Trong khi một kịch bản tạo ra chỉ một tên ngẫu nhiên và số điện thoại là tuyệt vời, nó là tốt hơn nhiều nếu kịch bản cho phép người dùng xác định có bao nhiêu tên và số họ muốn nhận được trong một lô. Rất tiếc, chúng tôi thực sự không thể tin tưởng người dùng luôn cung cấp thông tin nhập hợp lệ. Vì vậy, có một chút nhỏ hơn thế này hơn là chỉ $ UserInput = Read-Host.
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 } }
Câu lệnh while ở trên kiểm tra và phủ nhận giá trị của $ ValidInput. Miễn là $ ValidInput là sai, hoặc không tồn tại, nó sẽ tiếp tục lặp qua khối script của nó.
Câu lệnh try lấy đầu vào của người dùng, thông qua Read-Host và cố gắng chuyển đổi nó thành một giá trị số nguyên. (Đó là [int] trước khi Read-Host.) Nếu thành công, nó sẽ đặt $ ValidInput thành true để vòng lặp while có thể thoát. Nếu không thành công, khối catch sẽ đăng lỗi và vì $ ValidInput không được đặt, vòng lặp while sẽ quay lại và nhắc người dùng lần nữa.
Sau khi người dùng đã cung cấp một số chính xác làm đầu vào, chúng tôi muốn tập lệnh thông báo rằng nó sắp bắt đầu thực sự thực hiện công việc của mình và sau đó làm việc đó.
Write-Host '`nGenerating $UserInput names & phone numbers. Please be patient.`n' 1..$UserInput | ForEach-Object { <# INSERT RANDOM NAME & NUMBER GENERATOR HERE #> }
Đừng lo lắng, chúng tôi sẽ không để bạn tự mình tìm ra mã tên và trình tạo số ngẫu nhiên. Đó chỉ là một bình luận giữ chỗ để cho bạn thấy nơi mà phần tiếp theo (nơi mà công việc thực tế được thực hiện) sẽ phù hợp.
Dòng Viết-Host khá đơn giản. Nó chỉ đơn giản nói có bao nhiêu tên và số điện thoại mà kịch bản sẽ tạo ra, và yêu cầu người dùng phải kiên nhẫn trong khi kịch bản thực hiện công việc của nó. Các`nở đầu và cuối của chuỗi là chèn một dòng trống trước và sau đầu ra đó, chỉ để cho nó một số tách hình ảnh giữa dòng đầu vào và danh sách tên và số. Hãy lưu ý rằng đó là dấu kiểm ("dấu trọng âm" AKA - thường là tab ở trên, ở bên trái của 1) và không phải dấu nháy đơn hoặc dấu nháy đơn ở trước mỗi dấu n.
Phần tiếp theo cho thấy một cách khác bạn có thể sử dụng vòng lặp ForEach-Object. Thông thường, khi bạn muốn một khối tập lệnh chạy một số lần nhất định, bạn sẽ thiết lập một vòng lặp thông thường như cho ($ x = 1; $ x -le $ UserInput; $ x ++) {<# INSERT SCRIPT HERE #>}.ForEach-Object cho phép chúng ta đơn giản hóa điều này bằng cách cho nó một danh sách các số nguyên và thay vì nói nó thực sự làm bất cứ điều gì với các số nguyên đó, chúng ta chỉ cho nó một khối script tĩnh để chạy cho đến khi nó chạy hết các số nguyên để thực hiện nó.
Phần 3: Tạo một tên ngẫu nhiên
Tạo tên là bit đơn giản nhất trong phần còn lại của quá trình này. Nó chỉ bao gồm ba bước: Chọn họ, chọn giới tính và chọn tên. Hãy nhớ rằng bí danh mà chúng tôi đã thực hiện cho Get-Random một lúc trở lại? Đã đến lúc bắt đầu đưa điều đó vào sử dụng.
$Surname = Get-Content '$ScriptFolderSurnames.txt' | g $Male = g 2 if ($Male) {$FirstName = Get-Content '$ScriptFolderMales.txt' | g} else {$FirstName = Get-Content '$ScriptFolderFemales.txt' | g}
Dòng đầu tiên lấy danh sách họ của chúng ta, đưa nó vào bộ chọn ngẫu nhiên, và gán tên đã chọn cho $ Họ.
Dòng thứ hai chọn giới tính của con người chúng ta. Hãy nhớ cách Bắt đầu ngẫu nhiên bắt đầu đếm từ số không và cách số không là false và mọi thứ khác đều đúng? Đó là cách chúng tôi đang sử dụng Nhận ngẫu nhiên 2 (hoặc ngắn hơn nhiều g 2 nhờ bí danh của chúng tôi - cả hai kết quả trong một lựa chọn giữa số không hoặc một) để quyết định xem người của chúng tôi là nam hay không. Câu lệnh if / else sau đó chọn ngẫu nhiên một tên nam hoặc nữ cho phù hợp.
Phần 4: Tạo số điện thoại ngẫu nhiên
Đây là phần thực sự thú vị. Trước đó, chúng tôi đã chỉ cho bạn cách có một số cách để bạn có thể tạo số điện thoại không hợp lệ hoặc hư cấu. Vì chúng tôi không muốn tất cả các số của chúng tôi trông quá giống nhau, nên chúng tôi sẽ chọn ngẫu nhiên định dạng số không hợp lệ mỗi lần. Các định dạng được chọn ngẫu nhiên sẽ được xác định bởi Mã vùng và Mã Exchange, sẽ được lưu trữ chung thành tiền tố $.
$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'} }
Dòng đầu tiên là một thế hệ số ngẫu nhiên đơn giản để chọn định dạng mà chúng ta sẽ theo dõi cho số điện thoại. Sau đó, câu lệnh switch sẽ lấy lựa chọn ngẫu nhiên đó và tạo ra một tiền tố $ tương ứng. Hãy nhớ rằng danh sách các loại số điện thoại không hợp lệ? Các giá trị $ NumberFormat 0-3 tương ứng với bốn giá trị đầu tiên trong danh sách đó. Giá trị 4 có thể tạo một trong hai giá trị cuối, vì cả hai đều sử dụng Mã trao đổi “555”.
Tại đây, bạn cũng có thể thấy chúng tôi đang sử dụng một mẹo khác với dấu ngoặc kép. Dấu ngoặc kép không chỉ cho phép bạn diễn giải các biến trước khi chuỗi được xuất - chúng cũng cho phép bạn xử lý các khối tập lệnh. Để làm điều đó, bạn bọc khối script như thế này: “$ (<# SCRIPT HERE #>)”. Vì vậy, những gì bạn có ở trên là rất nhiều chữ số ngẫu nhiên riêng lẻ, với một số trong số chúng bị hạn chế trong phạm vi của chúng hoặc được đặt tĩnh theo các quy tắc chúng tôi cần tuân theo. Mỗi chuỗi cũng có dấu ngoặc đơn và dấu cách như bạn thường muốn thấy trong cặp Mã vùng và Mã Exchange.
Điều cuối cùng chúng ta cần thực hiện trước khi chúng tôi sẵn sàng xuất tên và số điện thoại của mình là tạo ID người đăng ký, ID này sẽ được lưu trữ dưới dạng $ 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)'} } } }
Do các quy tắc đặc biệt cho số 555, chúng tôi không thể tạo bốn chữ số ngẫu nhiên cho mỗi số điện thoại mà kịch bản của chúng tôi sẽ thực hiện. Vì vậy, công tắc đầu tiên kiểm tra xem chúng tôi có đang xử lý số 555 không. Nếu không, nó tạo ra bốn chữ số ngẫu nhiên. Nếu đó là số 555, công tắc thứ hai sẽ kiểm tra mã vùng 800.Nếu điều đó phù hợp, chỉ có một Suffix hợp lệ mà chúng ta có thể sử dụng. Nếu không, bạn được phép chọn từ bất kỳ thứ gì trong khoảng thời gian từ 0100-0199.
Lưu ý rằng có một vài cách khác nhau mà khối này có thể đã được viết, thay vì cách nó. Cả hai câu lệnh switch có thể đã được thay thế bằng câu lệnh if / else, vì mỗi câu lệnh chỉ xử lý hai lựa chọn. Ngoài ra, thay vì cụ thể gọi ra “4” làm tùy chọn cho câu lệnh chuyển đổi đầu tiên, “mặc định” có thể đã được sử dụng tương tự như cách nó được thực hiện trong lần thứ hai vì đó là tùy chọn duy nhất còn lại. Sự lựa chọn giữa if / else so với chuyển đổi, hoặc nơi để sử dụng từ khóa mặc định thay vì các giá trị cụ thể, thường đi xuống đến vấn đề sở thích cá nhân. Miễn là nó hoạt động, hãy sử dụng những gì bạn cảm thấy thoải mái nhất.
Bây giờ, đã đến lúc xuất.
Write-Output '$FirstName $Surname $Prefix-$Suffix' }
Điều này khá đơn giản như trong kịch bản. Nó chỉ xuất ra tên và họ được phân cách bằng dấu cách, sau đó thêm một dấu cách khác trước số điện thoại. Đây là nơi dấu gạch ngang chuẩn giữa Mã Exchange và ID người đăng ký cũng được thêm vào.
Khung đóng ở dưới cùng là kết thúc vòng lặp ForEach-Object từ trước đó - bỏ qua điều này nếu bạn đã có nó.
Phần 5: Dọn dẹp và chạy tập lệnh
Sau khi tất cả các công việc được thực hiện, một kịch bản tốt biết làm thế nào để làm sạch sau khi chính nó. Một lần nữa, việc xóa biến bên dưới không thực sự cần thiết nếu bạn chỉ chạy tập lệnh từ bảng điều khiển nhưng bạn sẽ muốn nó nếu bạn định chạy nó trong ISE.
Remove-Item alias:g Remove-Variable ScriptFolder,RequiredFiles,Surname,Male,FirstName,NumberFormat,Prefix,Suffix,ValidInput,UserInput
Sau khi bạn đã hoàn tất, hãy lưu tập lệnh bằng phần mở rộng ".ps1" trong cùng thư mục với tệp tên của bạn. Hãy chắc chắn rằng ExecutionPolicy của bạn được thiết lập để kịch bản có thể chạy, và cho nó một vòng xoáy.
Dưới đây là ảnh chụp màn hình của tập lệnh đang hoạt động:
Trình tạo số điện thoại và tên ngẫu nhiên cho PowerShell