我做一些腳本在PowerShell中,我想知道是否有以「聲明」的參數「X」以同樣的方式參數「-Credential」聲明的方式,例如在Get-WMIObject cmdlet中。如何參數類型轉換爲不同的對象類型
讓我更具體。幾乎所有cmdlet中的Credential參數都是PSCredential對象。但是,參數可以是PSCredential對象,也可以是帶有用戶名的字符串對象。
[CmdletBinding()]
param ([Parameter(Mandatory = $false)]
[System.Management.Automation.PSCredential]
$Credential)
傳遞字符串時出現問題。當然,無法對參數進行參數轉換。無法將類型「System.String」轉換爲PSCrendential類型。
謝謝Shay Levy。有用! – nbetm 2012-04-09 11:48:43
我一直在函數體內使用if($ Credential.GetType()。Name -ne'PSCredential'){$ Credential = Get-Credential $ Credential}'(將$ Credential轉換爲[PSObject])。您的解決方案更優雅,謝謝!但是,'= [System.Management.Automation.PSCredential] :: Empty'完成了什麼?只是'[System.Management.Automation.Credential()] $ Credential'本身似乎也可以正常工作 - 如果您提供了一個字符串,您將得到一個PS憑據請求提示,其中包含字符串填充的「用戶名」字段。 – 2013-06-06 18:13:01
1/2當Credential參數爲PSCredential時,您無法將字符串傳遞給它: get-something -cred adi,您將得到'無法處理參數轉換'錯誤。使用'Credential()'變換的 解決了這個問題。現在你可以做'get-something -cred adi'並且讓用戶名調用和填充憑證對話框。 – 2013-06-08 10:10:51