Я заметил, что большинство расширенных функций Powershell объявляют параметры стандартных типов данных (string, int, bool, xml, array, hashtable и т. Д.), Которые сопоставляются с конкретными типами .Net.
Как можно объявить параметр расширенной функции, используя другой тип данных .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 ()? Как?
Предполагая, что это возможно, вот вспомогательный вопрос: будет ли использование нестандартных типов таким образом противоречить «лучшей практике»?