Импорт и экспорт классов из других файлов - PullRequest
1 голос
/ 08 апреля 2019

Я создам сценарий PowerShell и загружу некоторый код из других файлов для его повторного использования.Но когда я импортирую файл, у меня появляется эта ошибка:

New-Object : Cannot find type [Car]: verify that the assembly containing this type is loaded.
At C:\Repo-path\test.ps1:4 char:13
+ [Car]$car = New-Object Car;
+             ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Вот мой car.psm1 файл:

New-Module -Script {
    class Car {
        [String]$vin;
        [String]$model;
    }
}

Вот как я называю код:

Import-Module -Force "C:\Repo-path\car.psm1" ;
[Car]$car = New-Object Car;

Как я могу это сделать?

Я также пробовал другие способы сделать то же самое, но ничего не работает.

1 Ответ

2 голосов
/ 08 апреля 2019

Import-Module не загружает определения классов.

Вам нужно будет использовать оператор using module в начале вашего скрипта:

using module C:\Repo-path\car.psm1

$car = [Car]::new()

Я предлагаюсоздание модулей где-то в вашем $Env:PSModulePath, поэтому вам не нужно полностью указывать путь в операторе импорта:

$path = "$HOME\WindowsPowerShell\car\1.0"
[void](mkdir $path -Force)
'class Car { [string] $Vin; [string] $Model }' | Out-File -FilePath "$path\car.psm1"
New-ModuleManifest -Path "$path\car.psd1" -RootModule "$path\car.psm1" -ModuleVersion '1.0'

Используется:

using module car

about_Using

Import-Module

...