powershell - 电源外壳。创建一个类文件来保存自定义对象?

标签 powershell powershell-2.0

我使用Powershell的custom-object命令来保存数据点。自定义对象仅创建一个对象,并为其分配变量。 Powershell可以更进一步,创建可以用来制造对象的新类吗?

在下面的示例中,我存储了三个数据:服务器名称,时间戳和服务器上发生事件以来的分钟数。

当我学习Powershell时,我将所有这些都放入二维数组中:

$record = @("Server","Timestamp","Minutes")
for ($j = 0; $j -lt 10; $j++){
    $record += @("Server1","$(get-date)",$j)
    sleep 60
    }
$record | export-csv -path c:\record.csv -no type information

export-csv不适用于数组,因此我开始使用自定义对象:
$record = @()
for ($j = 0; $j -lt 10; $j++){
    $r = New-Object -TypeName PSObject
    $r | Add-Member -MemberType NoteProperty -Name Server -Value ""
    $r | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
    $r | Add-Member -MemberType NoteProperty -Name Minutes -Value ""
    $r.server = "Server1"
    $r.timestamp = "$(get-date)"
    $r.minutes = "$j"
    $record += $r
    sleep 60
    }
$record | export-csv -path c:\record.csv -no type information

这样可以正确导出,并且处理对象属性比处理二维数组中的列更容易。

但是,如果要创建不在数组中的多个自定义对象,则必须一遍又一遍地编写自定义对象代码。
$server1 = New-Object -TypeName PSObject
$server1 | Add-Member -MemberType NoteProperty -Name Server -Value ""
$server1 | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
$server2 = New-Object -TypeName PSObject
$server2 | Add-Member -MemberType NoteProperty -Name Server -Value ""
$server2 | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
#ad nauseum

如果Powershell除了可以设计自定义对象,还可以设计自定义类怎么办?喜欢OO编程语言吗?就像是:
class record {
    -MemberType NoteProperty -Name Server -Value ""
    -MemberType NoteProperty -Name Timestamp -Value ""
    -MemberType NoteProperty -Name Minutes -Value ""
    }
$server1 = new-object -TypeName record
$server2 = new-object -TypeName record
$server3 = new-object -TypeName record

在Powershell中有可能吗?

最佳答案

您可以在PowerShell中定义类。

Add-Type -Language CSharp @"
public class Record{
    public System.DateTime TimeStamp;
    public string Server;
    public int Minutes;
}
"@;
$MyRecord = new-object Record;
$MyRecord.Server = "myserver";
$MyRecord.Timestamp = Get-Date;
$MyRecord.Minutes = 15;

关于powershell - 电源外壳。创建一个类文件来保存自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705158/

相关文章:

sql-server - 不同步时重新启动日志传送

rest - 使用 Powershell 通过 REST API 在 RT 上创建工单

.net - 一元运算符 '--' 后缺少表达式

powershell - 在Powershell中检测跨应用程序的按键

powershell-2.0 - 用于将日志文件从本地系统上传到 http URL 的 Powershell 脚本

Powershell文本处理: Join specific lines of a txt file

powershell - 实现 PowerShell 脚本翻译的最佳方法是什么?

powershell - 一步拆分和修剪

powershell-2.0 - New-PSDrive 不支持凭据?

powershell - 如何使用 ps1 脚本打开 image.png?