PowerShell を使用してクレデンシャルを取得する
-
PowerShell で
Get-Credential
を使用してクレデンシャルを取得する -
PowerShell でクレデンシャルを取得するためのプロンプトなしで
Get-Credential
コマンドレットを使用する
PSCredential オブジェクトは、クレデンシャルを安全に保存してさまざまなサービスに渡すための創造的な方法です。多くのネイティブおよびサードパーティのコマンドレットでは、さまざまなコマンドで PSCredential オブジェクトが必要です。さらに、クレデンシャルは Windows PowerShell の至る所に存在するオブジェクトです。
この記事では、Windows PowerShell の Get-Credential
コマンドレットを使用して、プロンプトなしでクレデンシャルを取得する方法について説明します。
PowerShell で Get-Credential
を使用してクレデンシャルを取得する
通常、PSCredential オブジェクトを作成するには、Get-Credential
コマンドレットを使用します。上記のコマンドレットは、Windows PowerShell が PSCredential オブジェクトを作成するための入力を受け取る最も一般的な方法です。このオブジェクトは、主にユーザー名とパスワードで構成されています。
実行されるたびに、コマンドラインでユーザー名とパスワードの入力を求めるプロンプトが表示されるか、ユーザーのクレデンシャルを尋ねるポップアップダイアログボックスが表示されます。
PowerShell でクレデンシャルを取得するためのプロンプトなしで Get-Credential
コマンドレットを使用する
たとえば、スケジュールされたタスクまたはより強力な自動化フレームワークの一部で実行される自動化されたスクリプトに取り組んでいます。この場合、ユーザー名とパスワードを入力するためにコンソールを操作する人は誰もいません。したがって、PSCredential オブジェクトを最初から作成することをお勧めします。
相互作用のない PSCredential オブジェクトを作成するには、暗号化のプロセスが必要です。PSCredential オブジェクトには、プレーンテキストのユーザー名と暗号化されたパスワードが必要です。
パスワードを暗号化するには、標準の文字列を安全な文字列に変換する必要があります。これを行うには、ConvertTo-SecureString
コマンドレットを使用します。このコマンドレットにプレーンテキストのパスワードを渡すことができます。これはプレーンテキストであるため、-PlainText
および -Force
パラメーターを使用する必要があります。両方のパラメーターは、確認の必要がないプレーンテキストの文字列を渡していることを示しています。
$pass = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force
安全な文字列が作成されたら、PSCredential オブジェクトを作成します。これを行うには、New-Object
コマンドレットを使用して、System.Management.Automation.PSCredential
のオブジェクトを定義できます。PSCredential クラスには、プレーンテキストのユーザー名と引数として使用できる安全な文字列パスワードを受け入れるコンストラクターがあります。
$credential = New-Object System.Management.Automation.PSCredential ('user01', $pass)
これで、プレーンテキストのユーザー名と安全な文字列のパスワードが変数に保存された PSCredential オブジェクトができました。これで、$credential
変数を -Credential
パラメーターを必要とするいくつかのコマンドに渡すことができます。これはうまく機能します。予想されるユーザー名とパスワードで作成されたかどうかを確認するために、UserName
プロパティを参照して、以前に使用したユーザー名を表示できます。
サンプルコード:
$credential.Username
出力:
user01
パスワードは安全な文字列で暗号化されていますが、同じコンピューターでパスワードを読み取り、ユーザーにログインしている場合は、GetNetworkCredential()
メソッドを使用してパスワードをプレーンテキストで表示できます。したがって、$credential
変数の最後に GetNetworkCredential()
を追加しますが、実行後にコンソールに出力されるパスワードがわからないことに注意してください。
サンプルコード:
$credential.GetNetworkCredential()
出力:
UserName Domain
-------- ------
user01
パスワードを確認するには、GetNetworkCredential()
が返すオブジェクトの Password プロパティを使用する必要があります。返されるパスワードは、PSCredential コンストラクターに提供したものと同じである必要があります。
サンプルコード:
$credential.GetNetworkCredential().Password
出力:
MySecretPassword
$credential
変数がユーザー名とパスワードの両方を保持していることを確認したので、Get-Credential
コマンドレットのパラメーターとして変数を使用できます。
Get-Credential -Credential $credential
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn