共用方式為


Get-Credential

依據使用者名稱與密碼取得認證物件。

Syntax

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 不再於名稱之前插入反斜線。

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

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

-Message

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

此參數是針對在函式或指令碼中使用而設計。 您可以使用該訊息向使用者說明為何要求認證,以及認證的用途。

此參數是在 Windows PowerShell 3.0 引進。

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

-UserName

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

當驗證提示出現在對話方塊時,使用者可以編輯指定的使用者名稱。 不過,當提示出現在命令列時,使用者無法變更使用者名稱。 當您在共用的函式或指令碼中使用此參數時,請考慮所有可能的呈現方式。

此參數是在 Windows PowerShell 3.0 引進。

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

輸入

None

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

輸出

PSCredential

Get-Credential 會傳回認證物件。

備註

您可以使用 Get-Credential 在要求使用者驗證的 Cmdlet (例如包含 Credential 參數的 Cmdlet) 中建立的 PSCredential 物件。

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

ConsolePrompting 登錄項目可用在 Windows PowerShell 主控台,但不適用所有的主機程式。

例如,它在 Windows PowerShell Integrated Scripting Environment (ISE) 中無效。 如需 ConsolePrompting 登錄項目效果的相關資訊,請參閱主機程式的說明主題。

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