首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取类的所有实例?

如何获取类的所有实例?
EN

Stack Overflow用户
提问于 2019-08-06 07:37:40
回答 3查看 89关注 0票数 1

我的课堂知识相对较新。但是我想用powershell输出类的所有对象/实例。这有可能吗?下面是我如何创建类计算机的两个对象的示例。

代码语言:javascript
复制
Class Computer {
    [String]$Name
    [String]$Description
    [String]$Type

}

$NewComputer = New-Object 'Computer'
$NewComputer.Name = 'ultra1'
$NewComputer.Description = 'Lenovo Yoga 900'
$NewComputer.Type = 'Ultrabook' 

$NewComputer = New-Object 'Computer'
$NewComputer.Name = 'ultra2'
$NewComputer.Description = 'Lenovo Yoga X1'
$NewComputer.Type = 'Ultrabook' 

现在我想输出这两个对象,我如何做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-06 09:00:02

从您的评论“如果有可能获得类的对象而不将它们放入集合”,我认为您想要做的是使用类创建新的Computer对象,然后使用这些对象作为单独的变量。

为了更容易地创建,我建议您向类中添加一个构造函数,这样您就可以在一行中创建对象:

代码语言:javascript
复制
Class Computer {
    [String]$Name
    [String]$Description
    [String]$Type

    # add a constructor
    Computer(
        [string]$n,
        [string]$d,
        [string]$t
    ){
        $this.Name = $n
        $this.Description = $d
        $this.Type = $t
    }
}

# now create the computer objects
[Computer]$pcUltra1 = [Computer]::new('ultra1','Lenovo Yoga 900','Ultrabook')
[Computer]$pcUltra2 = [Computer]::new('ultra2','Lenovo Yoga X1','Ultrabook')

# show what you have now
$pcUltra1
$pcUltra2

输出:

名称描述类型

希望这有帮助

票数 0
EN

Stack Overflow用户

发布于 2019-08-06 07:45:25

也许这个能帮上忙

代码语言:javascript
复制
Class Computer {
    [String]$Name
    [String]$Description
    [String]$Type

}

# a collection of computers
$computers =@()

$NewComputer = New-Object 'Computer'
$NewComputer.Name = ‘ultra1’
$NewComputer.Description = ‘Lenovo Yoga 900’
$NewComputer.Type = ‘Ultrabook’ 

# append a computer to teh collection
$computers += $NewComputer

$NewComputer = New-Object 'Computer'
$NewComputer.Name = ‘ultra2’
$NewComputer.Description = ‘Lenovo Yoga X1’
$NewComputer.Type = ‘Ultrabook’ 

# append a computer to teh collection
$computers += $NewComputer

# this outputs each of the computers
$computers

# or you can format the data in a table
$computers | Format-Table -AutoSize

# or in a list
$computers | Format-List *

# or as json
$computers | ConvertTo-Json
票数 0
EN

Stack Overflow用户

发布于 2019-08-06 11:29:13

假设您没有重新绑定任何名称,则可以执行以下操作:

代码语言:javascript
复制
Get-Variable | Select-Object -ExpandProperty Value |
    Where-Object { $_.GetType().Name -eq 'Computer' }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57371102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档