Share via


Get-Credential

ユーザー名とパスワードに基づいて資格情報オブジェクトを取得します。

構文

Get-Credential
   [-Credential] <PSCredential>
   [<CommonParameters>]
Get-Credential
   -Message <String>
   [[-UserName] <String>]
   [<CommonParameters>]

説明

コマンドレットは Get-Credential 、指定されたユーザー名とパスワードの資格情報オブジェクトを作成します。 作成した資格情報オブジェクトは、セキュリティ操作で使用できます。

PowerShell 3.0 以降では、Message パラメーターを使用して、ユーザーに名前とパスワードの入力を求めるカスタマイズされたメッセージをダイアログ ボックスで指定できます。

このコマンドレットは Get-Credential 、ユーザーにパスワードまたはユーザー名とパスワードの入力を求めます。 既定では、ユーザーに入力を求める認証ダイアログ ボックスが表示されます。 ただし、PowerShell コンソールなどの一部のホスト プログラムでは、レジストリ エントリを変更することで、コマンド ラインでユーザーにプロンプトを表示できます。 このレジストリ エントリの詳細については、注記と例を参照してください。

例 1

$c = Get-Credential

このコマンドは資格情報オブジェクトを取得し、変数に $c 保存します。

このコマンドを入力すると、ユーザー名とパスワードの入力を求めるダイアログ ボックスが表示されます。 要求された情報を入力すると、コマンドレットはユーザーの資格情報を表す PSCredential オブジェクトを作成し、変数に$c保存します。

Credential パラメーターを持つコマンドレットなど、ユーザー認証を要求するコマンドレットの入力としてオブジェクトを使用できます。 ただし、PowerShell でインストールされている一部のプロバイダーでは、Credential パラメーターがサポートされていません。

例 2

$c = Get-Credential -credential User01
$c.Username
User01

この例では、ドメイン名なしのユーザー名を含む資格情報を作成しています。

最初のコマンドは、User01 というユーザー名の資格情報を取得し、変数に $c 格納します。 2 番目のコマンドは、結果の資格情報オブジェクトの Username プロパティの値を表示します。

例 3

$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")

このコマンドでは、 PromptForCredential メソッドを使用して、ユーザーにユーザー名とパスワードの入力を求めます。 このコマンドは、結果の資格情報を変数に $Credential 保存します。

PromptForCredential メソッドは、コマンドレットを使用する代わりに使用しますGet-Credential。 PromptForCredential を使用する場合は、メッセージ ボックスに表示されるキャプション、メッセージ、およびユーザー名を指定できます。

詳細については、SDK の PromptForCredential ドキュメントを参照してください。

例 4

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds" -Name ConsolePrompting -Value $true

この例は、ダイアログ ボックスを使用する代わりに、コマンドラインでユーザーに入力が要求されるように、レジストリを変更する方法を示しています。

このコマンドは、 ConsolePrompting レジストリ エントリを 作成し、その値を True に設定します。 このコマンドを実行するには、[管理者として実行] オプションを使用して PowerShell を起動します。

ダイアログ ボックスを使用してプロンプトを表示するには、ConsolePrompting の値を false ($false) に設定するか、コマンドレットを Remove-ItemProperty 使用して削除します。

ConsolePrompting レジストリ エントリは、PowerShell コンソールなどの一部のホスト プログラムで動作します。 すべてのホスト プログラムで機能するわけではありません。

例 5

この例では、返される Get-Credential資格情報オブジェクトと同じ資格情報オブジェクトを作成する方法を示します。

$User = "Domain01\User01"
$PWord = Read-Host -Prompt 'Enter a Password' -AsSecureString
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

最初のコマンドは、変数にユーザー名を $User 割り当てます。 値が "Doメイン\User" または "ComputerName\User" の形式に従っていることを確認します。

2 番目のコマンドでは、コマンドレットを Read-Host 使用して、ユーザー入力からセキュリティで保護された文字列を作成します。 Prompt パラメーターはユーザー入力を要求し、AsSecureString パラメーターは入力をマスクし、セキュリティで保護された文字列に変換します。

3 番目のコマンドでは、コマンドレットをNew-Object使用して、変数$PWordに格納されている値から PSCredential オブジェクトを$User作成します。

例 6

Get-Credential -Message "Credential are required for access to the \\Server1\Scripts file share." -User Server01\PowerUser

PowerShell Credential Request
Credential are required for access to the \\Server1\Scripts file share.
Password for user Server01\PowerUser:

このコマンドでは、コマンドレットの Message パラメーターと UserName パラメーターを Get-Credential 使用します。 このコマンド形式は、共有スクリプトおよび共有関数向けに設計されています。 この例では、メッセージはユーザーに、資格情報が必要な理由を伝え、要求が正当であるという安心感を与えています。

例 7

Invoke-Command -ComputerName Server01 {Get-Credential Domain01\User02}

PowerShell Credential Request : 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 や Doメイン01\User01 など、資格情報のユーザー名を指定します。 パラメーター名 -Credentialは省略可能です。

コマンドを送信し、ユーザー名を指定すると、パスワードの入力を求められます。 このパラメーターを省略すると、ユーザー名とパスワードの入力を求められます。

PowerShell 3.0 以降では、doメイン なしでユーザー名を入力すると、Get-Credential名前の前に円記号が挿入されなくなります。

資格情報は PSCredential オブジェクトに格納され、パスワードは SecureString として格納されます。

Note

SecureString データ保護の詳細については、「SecureString のセキュリティ保護方法」を参照してください

Type:PSCredential
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Message

認証プロンプトに表示されるメッセージを指定します。 このパラメーターは、関数またはスクリプトで使用するように設計されています。 メッセージを使用して、資格情報が必要な理由と使用方法をユーザーに説明できます。

このパラメーターは PowerShell 3.0 で導入されました。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-UserName

ユーザー名を指定します。 認証プロンプトで、ユーザー名に対応するパスワードの入力が要求されます。 既定では、ユーザー名は空白で、認証プロンプトでユーザー名とパスワードの両方が要求されます。

認証プロンプトがダイアログ ボックスに表示される場合は、ユーザーは指定されたユーザー名を編集できます。 一方、認証プロンプトがコマンドラインに表示された場合は、ユーザーはユーザー名を変更できません。 共有関数または共有スクリプトでこのパラメーターを使用する場合は、可能性のあるすべての表示内容を考慮してください。

このパラメーターは PowerShell 3.0 で導入されました。

Type:String
Position:1
Default value:None (blank)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

None

このコマンドレットにオブジェクトをパイプすることはできません。

出力

PSCredential

このコマンドレットは、資格情報オブジェクトを返します。

メモ

Credential パラメーターを使用する場合など、ユーザー認証を要求するコマンドレットで作成する PSCredential オブジェクトGet-Credential使用できます。

既定では、認証プロンプトはダイアログ ボックスに表示されます。 コマンド ラインで認証プロンプトを表示するには、ConsolePrompting レジストリ エントリ (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting) を追加し、その値を True に設定しますConsolePrompting レジストリ エントリが存在しない場合、またはその値が False の場合、認証プロンプトがダイアログ ボックスに表示されます。 手順については、例を参照してください。

ConsolePrompting レジストリ エントリは PowerShell コンソールで動作しますが、一部のホスト プログラムでは機能しません。

たとえば、PowerShell 統合スクリプト環境 (I Standard Edition) には影響しません。 ConsolePrompting レジストリ エントリの効果については、ホスト プログラムのヘルプ トピックを参照してください。

Credential パラメーターは、PowerShell でインストールされているすべてのプロバイダーでサポートされているわけではありません。 PowerShell 3.0 以降では、選択したコマンドレット (コマンドレットなどGet-ContentNew-PSDrive) でサポートされています。