我使用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/