Thật khó để giải mã những gì bạn đang cố gắng làm ...
Biên tập; như được đề cập bởi Ryan, hiện tại bạn đã xác định nó là một chuỗi ...
Nhưng trong một số mã, tôi đã sử dụng chức năng sau khi sử dụng Máy chủ lưu trữ và SecureStrings
function AskSecureQ ([String]$Question, [String]$Foreground="Yellow", [String]$Background="Blue") {
Write-Host $Question -ForegroundColor $Foreground -BackgroundColor $Background -NoNewLine
Return (Read-Host -AsSecureString)
}
Trong trường hợp của bạn, bạn gọi nó bằng cách làm như sau;
Param (
[Parameter(Mandatory=$True)]
[string]$FileLocation,
[Parameter(Mandatory=$True)]
[string]$password = AskSecureQ "Type the password you would like to set all the users to"
)
EDIT: Đưa ra các bình luận, và chỉ vì địa ngục của nó ... đây là một phương pháp thay thế được sử dụng để chuyển đổi chuỗi bảo mật ở trên thành văn bản thuần túy trong Powershell;
# Taking a secure password and converting to plain text
Function ConvertTo-PlainText( [security.securestring]$secure ) {
$marshal = [Runtime.InteropServices.Marshal]
$marshal::PtrToStringAuto( $marshal::SecureStringToBSTR($secure) )
}
Bạn sẽ sử dụng nó như thế này;
$PWPlain = ConvertTo-PlainText $password
Tóm lại, bạn lấy mật khẩu trong mặt nạ, đó là một chuỗi bảo mật, sau đó bạn có thể chia nó thành văn bản đơn giản để sử dụng ở nơi khác, một ví dụ từ thực sự sẽ là nếu một số chương trình CLI nhất định chỉ chấp nhận mật khẩu được chuyển vào chúng dưới dạng văn bản thuần túy, điều này giúp tự động hóa khi bạn không muốn mã hóa mật khẩu vào tập lệnh của mình ..