Get-Credential
ユーザー名とパスワードに基づいて資格情報オブジェクトを取得します。
構文
Get-Credential
[-Credential] <PSCredential>
[<CommonParameters>]
Get-Credential
-Message <String>
[[-UserName] <String>]
[<CommonParameters>]
説明
Get-Credential コマンドレットは、指定したユーザー名とパスワードの資格情報オブジェクトを作成します。 セキュリティ操作で資格情報オブジェクトを使用できます。
Windows PowerShell 3.0 以降では、 Message パラメーターを使用して、ユーザーに名前とパスワードの入力を求めるダイアログ ボックスのカスタマイズされたメッセージを指定できます。
Get-Credential コマンドレットは、ユーザーにパスワードまたはユーザー名とパスワードの入力を求めます。 既定では、ユーザーに確認を求める認証ダイアログ ボックスが表示されます。 ただし、Windows PowerShell コンソールなどの一部のホスト プログラムでは、レジストリ エントリを変更することで、コマンド ラインでユーザーにプロンプトを表示できます。 このレジストリ エントリの詳細については、メモと例を参照してください。
例
例 1
$c = Get-Credential
このコマンドは、資格情報オブジェクトを取得し、それを $c 変数に保存します。
コマンドを入力すると、ユーザー名とパスワードを要求するダイアログ ボックスが表示されます。 要求された情報を入力すると、コマンドレットはユーザーの資格情報を表す PSCredential オブジェクトを作成し、それを $c 変数に保存します。
このオブジェクトは、Credential パラメーターを持つコマンドレットなど、ユーザー認証を要求するコマンドレットへの入力として使用できます。 ただし、Windows PowerShell と共にインストールされる一部のプロバイダーは、 Credential パラメーターをサポートしていません。
例 2
$c = Get-Credential
Get-WmiObject Win32_DiskDrive -ComputerName Server01 -Credential $c
これらのコマンドは、 Get-Credential コマンドレットが返す資格情報オブジェクトを使用してリモート コンピューター上のユーザーを認証し、Windows Management Instrumentation (WMI) を使用してコンピューターを管理できるようにします。
最初のコマンドは、資格情報オブジェクトを取得し、それを $c 変数に保存します。 2 番目のコマンドは、Get-WmiObject コマンドで資格情報オブジェクトを使用します。 このコマンドは、Server01 コンピューター上のディスク ドライブに関する情報を取得します。
例 3
Get-WmiObject Win32_BIOS -ComputerName Server01 -Credential (Get-Credential -Credential Domain01\User01)
このコマンドは、Get-WmiObject コマンドに Get-Credential コマンドを含める方法を示しています。
このコマンドは、Get-WmiObject コマンドレットを使用して、Server01 コンピューター上の BIOS に関する情報を取得します。 Credential パラメーターを使用してユーザー Domain01\User01 を認証し、Get-Credential コマンドを Credential パラメーターの値として使用します。
例 4
PS> $c = Get-Credential -credential User01
PS> $c.Username
User01
この例では、ドメイン名のないユーザー名を含む資格情報を作成します。
最初のコマンドは、User01 というユーザー名の資格情報を取得し、それを $c 変数に格納します。
2 番目のコマンドは、結果の資格情報オブジェクトの Username プロパティの値を表示します。
例 5
$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")
このコマンドは、PromptForCredential メソッドを使用して、ユーザーにユーザー名とパスワードの入力を求めます。 このコマンドは、結果の資格情報を $Credential 変数に保存します。
PromptForCredential メソッドは、Get-Credential コマンドレットを使用する代わりに使用できます。 PromptForCredential 使用する場合は、メッセージ ボックスに表示されるキャプション、メッセージ、およびユーザー名を指定できます。
例 6
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds" -Name ConsolePrompting -Value $true
この例では、ダイアログ ボックスを使用するのではなく、コマンド ラインでユーザーにプロンプトが表示されるようにレジストリを変更する方法を示します。
このコマンドは、ConsolePrompting レジストリ エントリを作成し、その値を True に設定します。 このコマンドを実行するには、Windows PowerShell を [管理者として実行] オプションを指定して起動します。
ダイアログ・ボックスをプロンプトに使用するには、ConsolePrompting の値を false ($false) に設定するか、Remove-ItemProperty コマンドレットを使用して削除します。
ConsolePrompting レジストリ エントリは、Windows PowerShell コンソールなどの一部のホスト プログラムで機能します。 一部のホスト プログラムでは機能しない場合があります。
例 7
この例では、ユーザーにプロンプトを表示せずに Get-Credential 返されるオブジェクトと同じ資格情報オブジェクトを作成する方法を示します。 この方法では、プレーンテキストのパスワードが必要ですが、これは一部の企業のセキュリティ標準に違反する可能性があります。
PS> $User = "Domain01\User01"
PS> $PWord = ConvertTo-SecureString -String "P@sSwOrd" -AsPlainText -Force
PS> $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
最初のコマンドは、$User パラメーターにユーザー アカウント名を保存します。 値は "Domain\User" または "ComputerName\User" の形式である必要があります。
2 番目のコマンドでは、ConvertTo-SecureString コマンドレットを使用して、プレーンテキスト パスワードからセキュリティで保護された文字列を作成します。 このコマンドでは、 AsPlainText パラメーターを使用して文字列がプレーン テキストであることを示し、 Force パラメーターを使用してプレーン テキストを使用するリスクを理解していることを確認します。
3 番目のコマンドでは、New-Object コマンドレットを使用して、$User 変数と $PWord 変数の値から PSCredential オブジェクトを作成します。
例 8
PS> Get-Credential -Message "Credential are required for access to the \\Server1\Scripts file share." -User Server01\PowerUsers
Windows PowerShell Credential Request
Credential are required for access to the \\Server1\Scripts file share.
Password for user ntdev\juneb:
このコマンドは、Get-Credential コマンドレットの Message パラメーターと UserName パラメーターを使用します。 このコマンド形式は、共有スクリプトと関数用に設計されています。 この場合、メッセージは資格情報が必要な理由をユーザーに伝え、要求が正当であることを信頼できるようにします。
例 9
PS> Invoke-Command -ComputerName Server01 {Get-Credential Domain01\User02}
Windows PowerShell Credential Request : Windows PowerShell Credential Request
Warning: This credential is being requested by a script or application on the SERVER01 remote computer. Enter your credentials only if you
trust the remote computer and the application or script requesting it.
Enter your credentials.
Password for user Domain01\User02: ***************
PSComputerName : Server01
RunspaceId : 422bdf52-9886-4ada-ab2f-130497c6777f
PSShowComputerName : True
UserName : Domain01\User01
Password : System.Security.SecureString
このコマンドは、Server01 リモート コンピューターから資格情報を取得します。 このコマンドでは、Invoke-Command コマンドレットを使用して、リモート コンピューターで Get-Credential コマンドを実行します。 出力は、 Get-Credential が認証プロンプトに含めるリモート セキュリティ メッセージを示しています。
パラメーター
-Credential
資格情報のユーザー名 ("User01" や "Domain01\User01" など) を指定します。 パラメータ名 ("Credential") はオプションです。
コマンドを送信すると、パスワードの入力を求められます。
Windows PowerShell 3.0 以降では、ドメインなしでユーザー名を入力した場合、名前の前に円記号が挿入 Get-Credential なくなりました。
このパラメータを省略すると、ユーザ名とパスワードの入力を求められます。
型: | PSCredential |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Message
認証プロンプトに表示されるメッセージを指定します。
このパラメーターは、関数またはスクリプトで使用するように設計されています。 このメッセージを使用して、資格情報を要求する理由とその使用方法をユーザーに説明できます。
このパラメーターは、Windows PowerShell 3.0 で導入されています。
型: | String |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UserName
ユーザー名を指定します。 認証プロンプトは、ユーザー名のパスワードを要求します。 既定では、ユーザー名は空白で、認証プロンプトはユーザー名とパスワードの両方を要求します。
ダイアログ ボックスに認証プロンプトが表示されたら、ユーザーは指定したユーザー名を編集できます。 ただし、コマンド ラインにプロンプトが表示された場合、ユーザーはユーザー名を変更できません。 このパラメーターを共有関数またはスクリプトで使用する場合は、考えられるすべてのプレゼンテーションを検討してください。
このパラメーターは、Windows PowerShell 3.0 で導入されています。
型: | String |
配置: | 1 |
規定値: | None (blank) |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
None
このコマンドレットに入力をパイプすることはできません。
出力
Get-Credential は資格情報オブジェクトを返します。
メモ
Get-Credential によって作成される PSCredential オブジェクトは、Credential パラメーターを持つものなど、ユーザー認証を要求するコマンドレットで使用できます。
既定では、認証プロンプトがダイアログ ボックスに表示されます。 コマンド ラインで認証プロンプトを表示するには、 ConsolePrompting レジストリ エントリ (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting) を追加し、その値を True に設定します。 ConsolePrompting レジストリ エントリが存在しない場合、またはその値が False の場合、認証プロンプトがダイアログ ボックスに表示されます。 手順については、例を参照してください。
ConsolePrompting レジストリ エントリは Windows PowerShell コンソールで機能しますが、すべてのホスト プログラムで機能するわけではありません。
たとえば、Windows PowerShell Integrated Scripting Environment (ISE) では効果がありません。 ConsolePrompting レジストリ エントリの効果については、ホスト プログラムのヘルプ トピックを参照してください。
Credential パラメーターは、Windows PowerShell と共にインストールされるすべてのプロバイダーでサポートされているわけではありません。 Windows PowerShell 3.0 以降では、Get-WmiObject コマンドレットや New-PSDrive コマンドレットなど、選択したコマンドレットでサポートされています。