共用方式為


Get-Credential

根據使用者名稱和密碼取得認證物件。

語法

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

Description

Get-Credential Cmdlet 會建立指定使用者名稱和密碼的認證物件。 您可以在安全性作業中使用認證物件。

從 Windows PowerShell 3.0 開始,您可以使用 Message 參數,在對話框中指定自定義訊息,提示使用者輸入其名稱和密碼。

Get-Credential Cmdlet 會提示使用者輸入密碼或使用者名稱和密碼。 根據預設,[驗證] 對話框會顯示為提示使用者。 不過,在某些主機程式中,例如 Windows PowerShell 控制台,您可以變更登錄專案,在命令行提示使用者。 如需此登錄專案的詳細資訊,請參閱附註和範例。

範例

範例 1

$c = Get-Credential

此命令會取得認證物件,並將它儲存在 $c 變數中。

當您輸入命令時,會出現一個對話框,要求使用者名稱和密碼。 當您輸入要求的資訊時,Cmdlet 會建立代表使用者認證的 PSCredential 物件,並將它儲存在$c變數中。

您可以使用 對象作為要求使用者驗證的 Cmdlet 輸入,例如具有 Credential 參數的 Cmdlet。 不過,某些與 Windows PowerShell 一起安裝的提供者不支援 Credential 參數。

範例 2

$c = Get-Credential
Get-WmiObject Win32_DiskDrive -ComputerName Server01 -Credential $c

這些命令會使用認證物件,Get-Credential Cmdlet 傳回來驗證遠端電腦上的使用者,以便他們可以使用 Windows Management Instrumentation (WMI) 來管理計算機。

第一個命令會取得認證物件,並將它儲存在$c變數中。 第二個命令會在 Get-WmiObject 命令中使用認證物件。 此命令會取得 Server01 計算機上磁碟驅動器的相關信息。

範例 3

Get-WmiObject Win32_BIOS -ComputerName Server01 -Credential (Get-Credential -Credential Domain01\User01)

此命令示範如何在 get-WmiObject 命令中包含 Get-Credential 命令。

此命令會使用 Get-WmiObject Cmdlet 來取得 Server01 計算機上 BIOS 的相關信息。 它會使用 Credential 參數來驗證使用者 Domain01\User01,並使用 Get-Credential 命令作為 Credential 參數的值。

範例 4

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

此範例會建立包含不含功能變數名稱之使用者名稱的認證。

第一個命令會取得用戶名稱 User01 的認證,並將它儲存在$c變數中。

第二個命令會顯示所產生認證物件的 Username 屬性值。

範例 5

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

此命令會使用 PromptForCredential 方法來提示使用者輸入其使用者名稱和密碼。 命令會將產生的認證儲存在 $Credential 變數中。

PromptForCredential 方法是使用 Get-Credential Cmdlet 的替代方法。 當您使用 PromptForCredential時,您可以指定出現在消息框中的標題、訊息和用戶名稱。

範例 6

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

這個範例示範如何修改登錄,讓使用者在命令行提示,而不是使用對話框。

此命令會建立 ConsolePrompting 登錄專案,並將其值設定為 True。 若要執行此命令,請使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

若要使用對話框提示,請將 ConsolePrompting 的值設定為 false ($false),或使用 Remove-ItemProperty Cmdlet 將其刪除。

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」 格式。

第二個命令會使用 ConvertTo-SecureString Cmdlet,從純文字密碼建立安全字串。 此命令會使用 AsPlainText 參數來指出字串是純文字,而 Force 參數,以確認您瞭解使用純文本的風險。

第三個命令會使用 New-Object Cmdlet,從$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 Cmdlet 的 MessageUserName 參數。 此命令格式是針對共用文本和函式所設計。 在此情況下,訊息會告知用戶為何需要認證,並讓他們確信要求是合法的。

範例 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 Cmdlet,在遠端電腦上執行 Get-Credential 命令。 輸出會顯示 Get-Credential 包含在驗證提示中的遠端安全性訊息。

參數

-Credential

指定認證的用戶名稱,例如 「User01」 或 「Domain01\User01」。。 參數名稱 (“Credential”) 是選擇性的。

當您提交命令時,系統會提示您輸入密碼。

從 Windows PowerShell 3.0 開始,如果您輸入沒有網域的使用者名稱,Get-Credential 不再在名稱之前插入反斜杠。

如果您省略此參數,系統會提示您輸入使用者名稱和密碼。

類型:PSCredential
Position:1
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-Message

指定出現在驗證提示中的訊息。

此參數的設計目的是在函式或腳本中使用。 您可以使用訊息向使用者說明您要求認證的原因,以及其使用方式。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-UserName

指定用戶名稱。 驗證提示會要求使用者名稱的密碼。 根據預設,用戶名稱是空白的,而驗證提示會同時要求使用者名稱和密碼。

當驗證提示出現在對話框中時,用戶可以編輯指定的用戶名稱。 不過,當提示出現在命令行時,用戶無法變更用戶名稱。 在共用函式或腳本中使用此參數時,請考慮所有可能的簡報。

此參數是在 Windows PowerShell 3.0 中引進的。

類型:String
Position:1
預設值:None (blank)
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

None

您無法使用管線將輸入傳送至此 Cmdlet。

輸出

PSCredential

Get-Credential 會傳回認證物件。

備註

您可以使用 PSCredential 物件,Get-Credential 在要求使用者驗證的 Cmdlet 中建立,例如具有 Credential 參數的 Cmdlet。

根據預設,驗證提示會出現在對話框中。 若要在命令行顯示驗證提示,請新增 ConsolePrompting 登錄專案 (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting),並將其值設定為 True。 如果 ConsolePrompting 登錄專案不存在,或其值為 False,驗證提示會出現在對話框中。 如需指示,請參閱範例。

ConsolePrompting 登錄專案可在 Windows PowerShell 控制台中運作,但無法在所有主機程式中運作。

例如,它在 Windows PowerShell 整合式腳本環境 (ISE) 中沒有作用。 如需 ConsolePrompting 登錄專案之效果的相關信息,請參閱主機程式的說明主題。

所有與 Windows PowerShell 一起安裝的提供者都不支援 Credential 參數。 從 Windows PowerShell 3.0 開始,在選取的 Cmdlet 上支援它,例如 Get-WmiObject 和 New-PSDrive Cmdlet。