Trang chủ » làm thế nào để » Cách tạo tên và số điện thoại ngẫu nhiên với PowerShell

    Cách tạo tên và số điện thoại ngẫu nhiên với PowerShell

    Khi bạn cần một bộ dữ liệu để thử nghiệm hoặc trình diễn và bộ đó cần thể hiện Thông tin nhận dạng cá nhân (PII), bạn thường không muốn sử dụng dữ liệu thực đại diện cho người thực. Tại đây, chúng tôi sẽ hướng dẫn bạn cách bạn có thể sử dụng PowerShell để tạo danh sách tên và số điện thoại ngẫu nhiên cho một dịp như vậy.

    Những gì bạn cần

    Trước khi bạn bắt đầu, có một số công cụ và thông tin bạn nên có:

    PowerShell

    Tập lệnh này được phát triển bằng PowerShell 4.0 và cũng đã được kiểm tra khả năng tương thích với PowerShell 2.0. PowerShell 2.0 trở lên đã được tích hợp sẵn cho Windows kể từ Windows 7. Nó cũng có sẵn cho Windows XP và Vista như một phần của Khung quản lý Windows (WMF). Một số chi tiết 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 trở xuống 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 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 để cung cấp cho 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 liên quan đến mức độ phổ biến của chúng (mặc dù điều đó sẽ không được sử dụng cho kịch bản này), là Cục điều tra dân số Hoa Kỳ. Các 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 dự định tạo ra 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 bằng cách sử dụng danh sách đầy đủ nhưng số dặm của bạn sẽ thay đổi tùy thuộc vào thông số hệ thống của riêng bạn.

    • Họ và tên
    • Tên nam
    • Tên nữ

    Bất kể nguồn bạn sử dụng là gì, 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 nhóm để chọn tên. Mỗi tệp chỉ nên chứa tên và chỉ 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 tên họ bạn muốn tập lệnh chọn. Thí dụ:

    Smith Johnson Williams Jones Brown

    Males.txt nên chứa tên đầu tiên nam bạn muốn tập lệnh để chọn. Thí dụ:

    James John Robert Michael William

    Females.txt nên chứa tên đầu tiên nữ mà 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 chắc chắn 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 nổi tiếng 555 555 nổi tiếng. Nhưng nếu bạn sắp hiển thị một tập dữ liệu có nhiều số điện thoại, thì số 555 đó sẽ bắt đầu trông khá đơn điệu rất nhanh. Để làm cho mọi thứ thú vị hơn, chúng tôi sẽ tạo ra các số điện thoại khác vi phạm quy tắc Kế hoạch đánh số Bắc Mỹ (NANP). Dưới đây là một số số điện thoại không hợp lệ mẫu, đạ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 gán mã vùng với 9 là chữ số thứ hai.
    • (678) 035-7598
      Số này không hợp lệ vì Mã trao đổi 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ã trao đổi không thể kết thúc bằng hai 1.
    • (265) 555-0128
      Số này không hợp lệ vì Mã trao đổi là 555, ID người đăng ký nằm trong phạm vi dành riêng cho các số giả tưởng.
    • (800) 555-0199
      Số này là 800 số duy nhất có Mã trao đổi 555 được dành riêng để sử dụng làm số giả tưởng.

    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 tự nghiên cứu để xác minh các quy tắc hiện hành áp dụng cho miền địa phương nơi bạn sẽ tạo 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 toàn bộ kịch bản này, vì vậy bạn nên có một ý tưởng cơ bản về ý nghĩa của những điều này trước khi chúng ta 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 từng đối tượng. Trong khối tập lệnh ForEach-Object, biến $ _ được sử dụng để chỉ mục hiện tại đang được xử lý.
    • nếu khá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 đượ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 báo cáo giống như nếu báo cáo với nhiều sự lựa chọn hơn. Switch sẽ kiểm tra một đối tượng theo 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 khớp. Bạn cũng có thể, tùy chọn, 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 phù hợp. Các câu lệnh chuyển đổi cũng sử dụng biến $ _ để chỉ mục hiện tại đang được xử lý.
    • trong khi câu lệnh cho phép bạn liên tục lặp lại một khối tập lệnh miễn là một điều kiện nhất định được đáp ứng. Khi điều gì đó xảy ra khiến điều kiện không còn đúng khi khối tập lệnh kết thúc, vòng lặp sẽ thoát.
    • cố gắng bắt báo cáo giúp xử lý lỗi. Nếu có sự cố xảy ra với khối tập lệnh được chỉ định để thử, khối bắt sẽ chạy.
    • Có được nội dung Liệu những gì nó nói trên tin. Nó nhận được 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 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 được sử dụng với các lệnh khác.
    • Máy chủ lưu trữ đặt công cụ trong giao diện điều khiển. Điều này được sử dụng để trình bày thông báo cho người dùng và không được bao gồm trong đầu ra của tập lệnh nếu đầu ra được chuyển hướng.
    • Đầu ra ghi thực sự tạo ra đầu ra. Thông thường, điều này được đổ vào bàn điều khiển nhưng nó cũng có thể được chuyển hướng bởi 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 chúng khi chúng tôi đi.

    Xây dựng kịch bản

    Bây giờ là lúc để làm bẩn tay chúng ta.

    Phần 1: Sẵn sàng để đi

    Nếu bạn muốn tập lệnh của mình bắt đầu chạy từ bảng điều khiển sạch, đây là dòng đầu tiên bạn muốn trong đó.

    Xóa máy chủ

    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ứ nó cần đều được đặt đúng chỗ. Để làm điều đó, chúng ta cần bắt đầu bằng cách nói cho nó biết nơi cần tìm và những gì cần tìm.

    $ ScriptFolder = Split-Path $ MyInvocation.MyCommand.Def định -Parent $ requiredFiles = ('Males.txt', 'Females.txt', 'Surnames.txt')

    Dòng đầu tiên có rất hữu ích cho bất kỳ kịch bản. Nó định nghĩa một biến trỏ đến thư mục chứa tập lệnh. Điều này rất cần thiết nếu tập lệnh 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ì nếu không bạn sẽ gặp lỗi nếu và khi bạn cố chạy tập lệnh trong khi bạn ở tập lệnh khác thư mục làm việc.

    Dòng thứ hai tạo ra một mảng các tên tệp được yêu cầu để tập lệnh chạy đúng. 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 nơi chúng tôi kiểm tra để chắc chắn rằng các tệp đó có mặt.

    $ Bắt buộc | ForEach-Object if (! (Đường dẫn thử nghiệm "$ ScriptFolder \ $ _")) Máy chủ ghi "$ _ không tìm thấy." -ForegroundColor Red $ MissingFiles ++

    Đoạn mã 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 Test-Path để xem liệu tệp chúng ta đang tìm có nằm ở đâu không. Test-Path là một lệnh đơn giản, khi được cung cấp 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 ta biết nếu đường dẫn trỏ đến một cái gì đó tồn tại. Dấu chấm than trong đó là một không phải toán tử, đảo ngược phản hồi của Test-Path trước khi chuyển nó sang câu lệnh if. Vì vậy, nếu Đường dẫn kiểm tra 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 đổi 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 khác cần lưu ý ở đây, 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 ngoặc đơn. Khi bạn đặt một cái gì đó trong dấu ngoặc đơn, PowerShell coi nó như một chuỗi tĩnh. Bất cứ điều gì trong các trích dẫn sẽ được chuyển chính xác. Dấu ngoặc kép bảo PowerShell dịch các biến và một số mục đặc biệt khác trong chuỗi trước khi chuyển nó đi cùng. Ở đây, dấu ngoặc kép có nghĩa là thay vì chạy Đường dẫn thử nghiệm '$ ScriptFolder \ $ _'  chúng ta thực sự sẽ làm một cái gì đó giống như Đường dẫn thử nghiệm 'C: \ Sc scripts \ Surnames.txt' (giả sử tập lệnh của bạn ở dạng C: \ ScScript và ForEach-Object hiện đang hoạt động trên 'Surnames.txt').

    Đối với mỗi tệp không được tìm thấy, Write-Host 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 "Không thể tìm thấy (các) tệp nguồn $ MissingFiles. Hủy bỏ tập lệnh." -ForegroundColor Red Loại bỏ biến đổi ScriptFolder, requiredFiles, MissingFiles Thoát

    Đây là một mẹo gọn gàng khác mà bạn có thể làm với câu lệnh if. Hầu hết các hướng dẫn bạn sẽ thấy nếu 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 khớp. Ví dụ, ở đây chúng ta có thể sử dụng if ($ MissingFiles -gt 0) để xem $ MissingFiles có lớn hơn không. Tuy nhiên, nếu bạn đã sử dụng các lệnh trả về giá trị boolean (như trong khối trước đó nơi chúng tôi đang sử dụng Đường dẫn thử nghiệm) thì không cần thiết. Bạn cũng có thể làm mà không cần 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 không. Bất kỳ số nào khác không (dương hoặc âm) được coi là đúng, trong khi số không (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 không, Write-Host sẽ đăng 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 đó, Loại bỏ biến sẽ dọn sạch tất cả các biến chúng tôi đã tạo và Thoát sẽ thoát khỏi tập lệnh. Trong bảng điều khiển PowerShell thông thường, Loại bỏ biến không thực sự cần thiết cho mục đích cụ thể này vì các biến được đặt bởi tập lệnh thường bị loại bỏ khi tập lệnh thoát. Tuy nhiên, PowerShell ISE hoạt động hơi khác một chút nên bạn có thể muốn giữ điều này nếu bạn định chạy tập lệnh từ đó.

    Nếu tất cả mọi thứ theo thứ tự, kịch bản sẽ tiếp tục. Một sự chuẩn bị nữa để thực hiện là một bí danh mà chúng ta sẽ thực sự vui mừng sau này.

    Bí danh mới g Nhận ngẫu nhiên

    Bí danh được sử dụng để tạo tên thay thế cho các lệnh. Chúng có thể hữu ích để giúp chúng ta làm quen với giao diện mới (ví dụ: PowerShell có các bí danh tích hợp như thư mục -> Get-ChildItem mèo -> Nhận nội dung) hoặc để tạo các tham chiếu tay ngắn cho các lệnh thường được sử dụng. Ở đây, chúng tôi đang thực hiện một rất tài liệu tham khảo ngắn cho Nhận ngẫu nhiên lệnh sẽ được sử dụng rất nhiều sau này.

    Get-Random khá nhiều làm những gì tên của nó ngụ ý. Đưa ra một mả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 số ngẫu nhiên. Điều cần nhớ về Get-Random và các con số là, giống như nhiều hoạt động khác của máy tính, 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à những người tự nhiên hơn cung cấp cho tôi một số từ 1 đến 10, điều đó thực sự có nghĩa là cung cấp cho tôi một số từ 0 đến 9 .. Bạn có thể cụ thể hơn về việc chọn số, để Get-Random cư xử giống như bạn một cách tự nhiên mong đợi, nhưng chúng ta sẽ không cần điều đó trong kịch bản này.

    Phần 2: Bắt đầu vào của người dùng và bắt đầu làm việc

    Mặc dù tập lệnh chỉ tạo một tên và số điện thoại ngẫu nhiên là tuyệt vời, nhưng sẽ tốt hơn nhiều nếu tập lệnh cho phép người dùng chỉ định số lượng tên & số họ muốn nhận trong một đợt. Thật không may, chúng tôi không thể thực sự tin tưởng người dùng luôn cung cấp đầu vào hợp lệ. Vì vậy, có một chút ít về điều này hơn là chỉ $ UserInput = Máy chủ đọc.

    while (! $ ValidInput) thử [int] $ UserInput = Read-Host -Prompt 'Các mục được tạo' $ ValidInput = $ true bắt Write-Host 'Nhập không hợp lệ. Chỉ nhập một số. ' -ForegroundColor Red

    Câu lệnh while ở trên kiểm tra và phủ nhận giá trị của $ ValidInput. Chừng nào $ ValidInput là sai hoặc không tồn tại, nó sẽ tiếp tục lặp qua khối tập lệnh 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ị nguyên. (Đó là [int] trước 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 lệnh bắt lỗi và vì $ ValidInput không được đặt, vòng lặp while sẽ quay lại và nhắc lại người dùng.

    Khi người dùng đã cung cấp đúng một số 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 đó bắt đầu thực hiện nó.

    Write-Host "'Tạo ra $ UserInput tên và số điện thoại. Xin hãy kiên nhẫn.'" 1 Từ $ UserInput | ForEach-Object 

    Đừng lo lắng, chúng tôi sẽ không để bạn tự mình tìm ra mã tạo tên & số ngẫu nhiên. Đó chỉ là một nhận xét giữ chỗ để cho bạn biết phần tiếp theo (nơi công việc thực sự được thực hiện) sẽ phù hợp.

    Dòng Write-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 kiên nhẫn trong khi tập lệnh thực hiện công việc của nó. Các'n ở đầu và cuối chuỗi là chèn một dòng trống trước và sau đầu ra đó, chỉ để tạo cho nó một sự tách biệt trực quan giữa dòng đầu vào và danh sách tên & số. Xin lưu ý rằng đó là dấu tích ngược (dấu nhấn trọng âm của AKA - thường là thẻ phía trên, ở bên trái của 1) và không phải là dấu nháy đơn hoặc dấu ngoặc đơn trước mỗi dấu n.

    Phần tiếp theo hiển thị một cách khác mà 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 ++) . ForEach-Object cho phép chúng tôi đơn giản hóa điều này bằng cách cung cấp cho nó một danh sách các số nguyên và thay vì bảo nó thực sự làm bất cứ điều gì với các số nguyên đó, chúng tôi chỉ cung cấp cho nó một khối tập lệnh tĩnh để chạy cho đến khi hết số nguyên.

    Phần 3: Tạo tên ngẫu nhiên

    Tạo tên là bit đơn giản nhất của 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 chúng tôi đã tạo cho Get-Random một lúc sau? Đã đến lúc bắt đầu sử dụng nó.

        $ Surname = Nhận nội dung "$ ScriptFolder \ Surnames.txt" | g $ Male = g 2 if ($ Male) $ FirstName = Get-Content "$ ScriptFolder \ Males.txt" | g other $ FirstName = Get-Content "$ ScriptFolder \ Females.txt" | g

    Dòng đầu tiên lấy danh sách họ của chúng tôi, đư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 chúng ta. Hãy nhớ cách Get-Random bắt đầu đếm từ 0 và làm thế nào 0 là sai 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 đều dẫn đến lựa chọn giữa không hoặc một) để quyết định xem người của chúng tôi có phải là nam hay không. Câu lệnh if / other sau đó chọn ngẫu nhiên tên đầu tiên của nam hoặc nữ.

    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, chúng tôi sẽ chọn ngẫu nhiên một đị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ã trao đổi, chúng sẽ được lưu trữ chung dưới dạng $ Tiền tố.

        $ NumberFormat = g 5 switch ($ NumberFormat) 0 $ Tiền tố = "($ (g 2) $ (g 10) $ (g 10)) $ (g 10) $ (g 10) $ (g 10)"  1 $ Tiền tố = "($ (g 10) 9 $ (g 10)) $ (g 10) $ (g 10) $ (g 10)" 2 $ Tiền tố = "($ (g 10) $ (g 10) $ (g 10)) $ (g 2) $ (g 10) $ (g 10) " 3 $ Tiền tố =" ($ (g 10) $ (g 10) $ (g 10)) $ (g 10) 11 " 4 $ Tiền tố =" ($ (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 tôi sẽ theo dõi cho số điện thoại. Sau đó, câu lệnh switch lấy lựa chọn ngẫu nhiên đó và tạo Tiền tố $ tương ứng. Ghi nhớ 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 cùng, vì cả hai đều sử dụng Mã trao đổi điện thoại di động 555 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 một 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 kịch bản như thế này: Thanh đô $ (). 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ị giới hạn trong phạm vi của chúng hoặc được đặt tĩnh theo các quy tắc chúng ta cần tuân theo. Mỗi chuỗi cũng có dấu ngoặc đơn và khoảng cách như bạn thường thấy trong cặp Mã vùng và Mã trao đổi.

    Điều cuối cùng chúng ta cần làm trước khi chúng ta 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ý, 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 ($ Tiền tố) '( 800) 555 '$ Suffix =' 0199 ' mặc định $ Suffix = "01 $ (g 10) $ (g 10)"

    Do các quy tắc đặc biệt cho 555 số, chúng tôi không thể tạo bốn chữ số ngẫu nhiên cho cuối mỗi số điện thoại mà tập lệnh 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 liệu chúng ta 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 phù hợp, chỉ có một $ Suffix hợp lệ chúng ta có thể sử dụng. Mặt khác, nó được phép chọn từ bất cứ thứ gì trong khoảng 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 viết. Cả hai câu lệnh chuyển đổi có thể đã được thay thế bằng câu lệnh if / other, vì mỗi câu lệnh chỉ xử lý hai lựa chọn. Ngoài ra, thay vì gọi cụ thể là ra 4 4 4 như một tùy chọn cho câu lệnh chuyển đổi đầu tiên, thì mặc định có thể được sử dụng tương tự như cách thức được thực hiện trong lần thứ hai vì đây là tùy chọn duy nhất còn lại. Sự lựa chọn giữa if / other so với switch hoặc nơi sử dụng từ khóa mặc định thay vì các giá trị cụ thể, thường thuộc về vấn đề sở thích cá nhân. Miễn là nó hoạt động, hãy sử dụng bất cứ thứ gì bạn thấy thoải mái nhất.

    Bây giờ, đã đến lúc đầu ra.

        Đầu ra ghi "$ FirstName $ Surname $ Prefix- $ Suffix"

    Điều này khá đơn giản như nó có trong kịch bản. Nó chỉ xuất ra tên và họ được phân tách bằng dấu cách, sau đó là khoảng trắng khác trước số điện thoại. Đây là nơi dấu gạch ngang tiêu chuẩn giữa Mã trao đổi và ID người đăng ký cũng được thêm vào.

    Khung đóng đó ở dưới cùng là kết thúc của 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 Script

    Sau khi hoàn thành công việc, một kịch bản tốt sẽ biết cách tự dọn dẹp. Một lần nữa, loại bỏ biến dưới đây 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 có kế hoạch chạy nó trong ISE.

    Bí danh Loại bỏ Mục: \ g Loại bỏ Tập lệnh Biến, Tập tin Bắt buộc, Họ, Nam, FirstName, NumberFormat, Tiền tố, Suffix, ValidInput, UserInput

    Sau khi bạn đã hoàn tất, hãy lưu tập lệnh với phần mở rộng của .ps1ps trong cùng thư mục với các tệp tên của bạn. Đảm bảo ExecutPolicy của bạn được đặt để tập lệnh có thể chạy và tạo cho nó một vòng xoáy.

    Đây là một ảnh chụp màn hình của tập lệnh đang hoạt động:

    Bạn cũng có thể tải xuống tệp ZIP chứa tập lệnh PowerShell này và các tệp văn bản có danh sách tên, từ liên kết bên dưới.

    Tên ngẫu nhiên và trình tạo số điện thoại cho PowerShell