我注意到大多數Powershell高級函數都聲明瞭映射到特定.Net的標準數據類型(string,int,bool,xml,array,hashtable等)的參數類型。在Powershell高級功能中使用非標準參數數據類型
如何使用另一個.Net數據類型聲明高級函數參數?例如,這裏是一個人爲的例子:
function Do-Something
{
[CmdletBinding()]
Param(
[System.Xml.XPathNodeList] $nodeList
)
Begin {}
Process
{
Foreach ($node in $nodeList)
{
Write-Host $node
}
}
End {}
}
# Prepare to call the function:
$xml = [xml](get-content .\employee.xml)
$nodeList = $xml.SelectNodes("//age")
# Call the function passing an XPathNodeList:
do-something $nodeList
調用此函數導致以下運行時錯誤:()
Unable to find type [System.Xml.XPathNodeList]: make sure that the assembly
containing this type is loaded.
可以這樣用LoadWithPartialName實現的呢?怎麼樣?
假設這是可能的,這裏有一個輔助問題:這種方式使用非標準類型會違背「最佳實踐」嗎?
哎呦 - 錯過了上面列出CmdletBinding,Keith的是完美的。 – 2011-02-22 21:32:19