2

データをエクスポートし、パスワードを使用して暗号化するカスタム PowerShell コマンドレットがあるとします。

[Cmdlet(VerbsData.Export, "SampleData")]
public class ExportSampleData : PSCmdlet
{
    [Parameter(Mandatory = true)]
    public string Password
    {
        get;
        set;
    }

    /* additional parameters */
}

パスワードを安全に適切に処理するにはどうすればよいですか? たとえば、管理者がコンソールに入力したときに値が表示されないようにしたいと思います。その他のオプションには、暗号化されたパスワードを含むファイルの読み取りが含まれます。

PSCredential は知っていますが、このシナリオでは意味をなさないユーザー名が必要です。

4

5 に答える 5

3

パスワードのみを取得したい場合は、次を使用できます

Read-Host–asSecureStringパラメーターを指定したコマンドレット。

このパラメータは入力をマスクします。

于 2012-06-24T05:25:34.193 に答える
1

Password パラメータのタイプを SecureString に変更します。管理者が -Password パラメーターを省略した場合、PowerShell は管理者に必須パラメーターの入力を求め、入力時にアスタリスクを表示することで正しいことを行います。

理想的には、コマンドレットの実装によって、SecureString をネイティブにサポートする (最も安全な) API に SecureString が渡されます。そうでない場合は、SecureString からパスワードを抽出する必要があります。これを行う方法に関する良い記事は次のとおりです。SecureString を String に適切に変換する方法

于 2012-07-11T02:06:01.883 に答える
1

この回答では、コンピューターのパスワードで暗号化する方法を見つけることができます (安全なマシンで動作します)。

@Christian 応答を使用すると、次のようにパスワードをディスクに入れることができます。

PS > $cred.Password | ConvertFrom-SecureString | Set-Content c:\temp\password.txt

そしてそれを取得します:

$password = Get-Content c:\temp\password.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PsCredential "UserName",$password
于 2012-06-25T03:55:27.130 に答える