Не могу найти тип - PullRequest
       2

Не могу найти тип

0 голосов
/ 22 февраля 2019

Я начинаю работать с классами PowerShell и пытаюсь следовать этому краткому руководству, используя ISE:

https://devblogs.microsoft.com/scripting/powershell-5-create-simple-class/

Вот пример кода с этой страницы:

Class Car
{
    [String]$vin
    static [int]$numberOfWheels = 4
    [int]$numberOfDoors
    [datetime]$year
    [String]$model
}

и вот команда для запуска:

$Chevy = New-Object Car

Однако я получаю сообщение об ошибке:

New-Object: Не удается найти тип [Автомобиль]: убедитесь, что сборка, содержащая этот тип, загружена.

Это кажется странным.Разве PowerShell не сможет найти этот класс?ISE IntelliSense также не может его найти.

Что мне нужно сделать, чтобы запустить его?

enter image description here

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

На снимке экрана показано, что вы пытаетесь создать экземпляр класса Car из интегрированной консоли ISE , тогда как класс определение содержится на вкладке сценария .

Следовательно, необходимо запустить код на вкладке скрипта first , чтобы определить класс, в простейшем случаенажав F5 .


. На общей ноте стоит перейти с PowerShell ISE на Код Visual Studio с Расширение PowerShell в качестве редактора кода PowerShell, потому что именно в этом и состоят все будущие усилия по разработке;, если вы планируете работать с PowerShell Core , многоплатформенное издание, ISE даже не вариант .

0 голосов
/ 22 февраля 2019

Когда вы пишете пользовательский код, такой как класс или функции, оболочка должна знать об этих объявлениях, чтобы использовать их.Когда вы запускаете powershell, он поставляется с предварительно загруженными типами и cmdLets.Вот почему вы можете использовать такие команды, как: get-command или построить строку [string]$mystring

Для того, чтобы использовать ваш класс, вам придется запустить объявление класса с помощью F5.Затем вы можете создать этот объект в этой оболочке: $mycar = New-Object Car

Если вы хотите использовать этот класс в нескольких сценариях, вы можете сохранить его как файл .ps1 и запустить его, прежде чем использовать в своем сценарии:. <filepath>\<filename>.ps1

. C:\Car.ps1
$myCar = New-Object Car

Используйте свой класс Car в оболочке

Или вы можете написать модуль и импортировать его в свой скрипт:

import-module <filePath>\myscript.ps1
$myCar = New-Object Car

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...