找不到类型

时间:2019-02-22 03:23:56

标签: powershell class

我开始使用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

但是,我遇到一个错误:

  

新对象:找不到类型[汽车]:验证是否已加载包含该类型的装配体。

这似乎很奇怪。 PowerShell不能找到此类吗? ISE IntelliSense也无法找到它。

我要做什么才能使它运行?

enter image description here

2 个答案:

答案 0 :(得分:1)

在编写类或函数之类的自定义代码时,外壳程序必须知道这些声明才能使用它。 启动powershell时,它附带了预加载的Types和cmdLets。这就是为什么您可以使用以下命令的原因: get-command 或建立一个字符串 [string]$mystring

要使用您的类,您将必须使用F5运行类声明。然后,您可以在此shell中实例化该对象: $mycar = New-Object Car

如果要在多个脚本中使用此类,可以将其另存为.ps1文件并运行,然后在脚本中使用它: . <filepath>\<filename>.ps1

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

Use you Car class in the shell

或者您可以编写模块并将其导入脚本中:

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

希望这会有所帮助:)

答案 1 :(得分:1)

您的屏幕快照显示您正在尝试从ISE集成的控制台实例化Car类,而 definition 类包含在脚本标签。

因此,必须先首先 运行脚本标签中的代码才能定义类,在最简单的情况下,请按< kbd> F5 。


一般来说,使用Visual Studio Code作为PowerShell代码的编辑器,从PowerShell ISE切换到PowerShell extension 是值得的,因为这是以后所有开发工作的地方会去; 如果您打算使用多平台版本的PowerShell Core ,则 ISE甚至都不可行