【发布时间】:2019-07-31 08:58:54
【问题描述】:
我正在尝试使用 PowerShell 中的 foreach 循环创建对象。尝试使用“while”循环,它也失败了。显然,循环方法不允许我创建对象...
事不宜迟……
我有两个脚本 - Class.psm1 和 Main.ps1。
开启Class.psm1
Class Car {
[string]$brand
[string]$model
[string]$color
#Constructor
Car ([string]$brand) {
$this.brand = $brand
switch -wildcard ($this.brand) {
('Toyota') {$this.model = 'ABC'; $this.color = 'red'; break}
('Honda') {$this.model = 'FGH'; $this.color = 'blue'; break}
}
}
}
在 Main.ps1
上Using module ".\Class.psm1"
$AllCars = {'Toyota', 'Honda'}
[array]$Objects = @()
foreach ($car in $AllCars) {
$temp = New-Object Car("$car")
$Objects += $temp
}
Main.ps1 的输出是 $Objects 只是返回“Toyota”和“Honda”,而不是对象(以及它应该具有的属性)。
但是,如果我只是单独创建对象,它会正常工作。
例如:
$temp = New-Object Car('Toyota')
$Objects += $temp
$temp = New-Object Car('Honda')
$Objects += $temp
但是,这太手工或不切实际。
我可以知道代码在哪个区域出错了...?如何在循环中创建对象?
【问题讨论】:
-
Class.psm1中有一堆语法错误 - 所有属性和参数都需要在名称前加上$ -
嗨 Jessen,对不起,我在这里手动输入(因为数据都是编造的),但代码中的代码与我的准确代码接近,语法正确,依此类推。感谢您发现它,将在此处更改它。
-
您是否编辑了您的类并尝试不重新启动 PowerShell?加载后,对其所做的更改将无法识别。
-
嗨 Theo.. 是的,你是对的。不知何故,类文件是需要重新启动的文件。它之后工作。谢谢!
标签: powershell loops object foreach