Get-Credential
根據使用者名稱和密碼取得認證物件。
語法
Get-Credential
[[-Credential] <PSCredential>]
[<CommonParameters>]
Get-Credential
[-Message <String>]
[[-UserName] <String>]
[-Title <String>]
[<CommonParameters>]
Description
Get-Credential
Cmdlet 會為指定的使用者名稱和密碼建立認證物件。 您可以在安全性作業中使用認證物件。
Get-Credential
Cmdlet 會提示使用者輸入密碼或使用者名稱和密碼。 您可以使用 Message 參數來指定提示的自訂訊息。
在 Windows PowerShell 5.1 和更早版本中,Windows 會顯示對話方塊來提示使用者名稱和密碼。 在 PowerShell 6.0 和更新版本中,所有平臺的控制台中都會顯示提示。
範例
範例 1
$c = Get-Credential
此命令會取得認證物件,並將它儲存在 $c
變數中。
當您輸入 命令時,系統會提示您輸入使用者名稱和密碼。 當您輸入要求的資訊時,Cmdlet 會建立代表使用者認證的 PSCredential 物件,並將它儲存在 $c
變數中。
您可以使用 對象作為要求使用者驗證的 Cmdlet 輸入,例如具有 Credential 參數的 Cmdlet。 不過,某些與 PowerShell 一起安裝的提供者不支援 Credential 參數。
範例 2
$c = Get-Credential -credential User01
$c.Username
User01
此範例會建立包含不含功能變數名稱之使用者名稱的認證。
第一個命令會取得用戶名稱 User01 的認證,並將它儲存在 $c
變數中。
第二個命令會顯示所產生認證物件的 Username 屬性值。
範例 3
$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")
此命令會使用 PromptForCredential 方法來提示使用者輸入其使用者名稱和密碼。 命令會將產生的認證儲存在 $Credential
變數中。
PromptForCredential 方法是使用 Get-Credential
Cmdlet 的替代方法。 當您使用 PromptForCredential時,您可以指定提示中顯示的標題、訊息和用戶名稱。
如需詳細資訊,請參閱 SDK 中的 PromptForCredential 檔。
範例 4
這個範例示範如何建立與 Get-Credential
傳回之物件相同的認證物件,而不提示使用者。 此方法需要純文本密碼,這可能會違反某些企業的安全性標準。
$User = "Domain01\User01"
$PWord = ConvertTo-SecureString -String "P@sSwOrd" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
第一個命令會將用戶帳戶名稱儲存在 $User
參數中。 值必須具有 「Domain\User」 或 「ComputerName\User」 格式。
第二個命令會使用 ConvertTo-SecureString
Cmdlet,從純文字密碼建立安全字串。 此命令會使用 AsPlainText 參數來指出字串是純文字,而 Force 參數,以確認您瞭解使用純文本的風險。
第三個命令會使用 New-Object
Cmdlet,從 $User
和 $PWord
變數中的值建立 PSCredential 物件。
範例 5
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:
此命令會使用 Get-Credential
Cmdlet Message 和 UserName 參數。 此命令格式是針對共用文本和函式所設計。 在此情況下,訊息會告知用戶為何需要認證,並讓他們確信要求是合法的。
範例 6
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
Cmdlet 在遠端電腦上執行 Get-Credential
命令。 輸出會顯示 Get-Credential
包含在驗證提示中的遠端安全性訊息。
參數
-Credential
指定認證的使用者名稱,例如 User01 或 Domain01\User01。 參數名稱 -Credential
為選擇性。
當您提交命令並指定使用者名稱時,系統會提示您輸入密碼。 如果您省略此參數,系統會提示您輸入使用者名稱和密碼。
從 PowerShell 3.0 開始,如果您在沒有網域的情況下輸入使用者名稱,Get-Credential
不再在名稱之前插入反斜杠。
認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString 。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
類型: | PSCredential |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Message
指定出現在驗證提示中的訊息。 此參數的設計目的是在函式或腳本中使用。 您可以使用訊息向使用者說明您要求認證的原因,以及其使用方式。
此參數是在 PowerShell 3.0 中引進的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Title
設定控制台中驗證提示的標題列文字。
此參數是在 PowerShell 6.0 中引進的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UserName
指定用戶名稱。 驗證提示會要求使用者名稱的密碼。 根據預設,用戶名稱是空白的,而驗證提示會同時要求使用者名稱和密碼。
此參數是在 PowerShell 3.0 中引進的。
類型: | String |
Position: | 1 |
預設值: | None (blank) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
您無法使用管線將物件傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回認證物件。
備註
您可以使用 PSCredential 物件,Get-Credential
在要求使用者驗證的 Cmdlet 中建立,例如具有 Credential 參數的 cmdlet。
所有與 PowerShell 一起安裝的提供者都不支援 Credential 參數。
從 PowerShell 3.0 開始,選取 Cmdlet 支援它,例如 Get-Content
和 New-PSDrive
Cmdlet。