Powershell Criar um arquivo de classe para armazenar objetos personalizados?
Eu uso o comando de objeto personalizado do Powershell para armazenar pontos de dados. O objeto personalizado cria apenas um objeto e atribui uma variável a ele. Pode o Powershell dar um passo além e criar novas classes a partir das quais objetos podem ser feitos?
Nos exemplos abaixo, eu armazeno três partes de dados: um nome de servidor, um registro de data e hora e os minutos desde que um evento ocorreu no servidor.
Quando eu estava aprendendo o Powershell, coloquei tudo isso em uma matriz bidimensional:
$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
O export-csv não funciona bem com arrays, então comecei a usar um objeto personalizado:
$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
Isso é exportações corretamente, e lidar com propriedades de objetos é mais fácil do que lidar com colunas em uma matriz bidimensional.
Mas, se eu quiser criar vários objetos personalizados que não estejam em uma matriz, preciso escrever o código de objeto personalizado repetidas vezes.
$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
E se o Powershell pudesse projetarclasses além de costumeobjetos? Como as linguagens de programação OO fazem? Algo como:
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
Isso é possível em Powershell?