Я создам сценарий 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;
Как я мог это сделать?
Я также пробовал другие способы сделать то же самое, но ничего не работает.
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