Могу ли я использовать System.Core.dll/System.Collections.Generic.HashSet в powershell?

Я хотел бы использовать HashSet в powershell script. Я думаю, что я выяснил, как создавать экземпляры общих объектов коллекции, делая:

[type] $strType = "string"
$listClass = [System.Collections.Generic.List``1]
$listObject = $base.MakeGenericType(@($t))
$myList = New-Object $setObject

Это отлично подходит для списков и словарей, но когда я пытаюсь создать HashSet, я получаю:

Unable to find type [System.Collections.Generic.HashSet`1]: make sure that the assembly containing this type is loaded.

Итак, похоже, что мне нужно загрузить System.Core.dll, но я не могу получить powershell для загрузки этой сборки. Например, вызов [System.Reflection.Assembly]:: LoadWithPartialName ( "System.Core" ) вызывает это исключение:

"LoadWithPartialName" with "1" argument(s): "Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified."

Любые указатели?

Ответ 1

PowerShell 2.0 делает это проще: 1) добавляет командлет Add-Type для загрузки сборки и 2) обновляет синтаксис, чтобы упростить определение закрытого типа типа типа, например:

PS> Add-Type -AssemblyName System.Core
PS> $h = new-object 'System.Collections.Generic.HashSet[string]'
PS> $h.Add('f')
True