Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Ik ben een script aan het herschrijven omdat het pakken efficiënter kan nu ik weet wat ik nog niet wist in het begin - een bekend gevoel voor al wie script of programmeert, behoudens diegenen die een kant-en-klaar plan hebben op voorhand en er zowaar nog in slagen zich daar volledig aan te houden.

Enfin, tijdens dit opkuiswerk kom ik volgende code (een geanonimiseerd fragment) tegen:
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
$PSObject = New-Object System.Object
$PSObject | Add-Member -type NoteProperty -Name ReplicaSize -Value $Object.ReplicaUsedSpace
$PSObject | Add-Member -type NoteProperty -Name RecoverySize -Value $Object.ShadowCopyUsedSpace
$PSObject | Add-Member -type NoteProperty -Name TotalSize -Value ($Object.ReplicaUsedSpace + $Object.ShadowCopyUsedSpace)
If ($DPMServer.Name -EQ "SpeciaalGeval")
    {
    $PSObject | Add-Member -type NoteProperty -Name Location -Value "Datacenter2"
    }
Else
    {
    $PSObject | Add-Member -type NoteProperty -Name Location -Value "Datacenter1"
    }


Die If/Else staat daar esthetisch in de weg. Dat is niet zomaar een fantasietje: in zo'n gigantisch script als dit (2000+ lijnen) is leesbaarheid heel belangrijk. Hier zo geïsoleerd lijkt dat niet erg, maar iets zoals het volgende ziet er pakken beter uit:

PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$PSObject = New-Object System.Object
$PSObject | Add-Member -type NoteProperty -Name ReplicaSize -Value $Object.ReplicaUsedSpace
$PSObject | Add-Member -type NoteProperty -Name RecoverySize -Value $Object.ShadowCopyUsedSpace
$PSObject | Add-Member -type NoteProperty -Name TotalSize -Value ($Object.ReplicaUsedSpace + $Object.ShadowCopyUsedSpace)
$PSObject | Add-Member -type NoteProperty -Name Location -Value {
                                                                If ($DPMServer.Name -EQ "SpeciaalGeval")    
                                                                    {
                                                                    Return "Datacenter2";
                                                                    }
                                                                ElseIf
                                                                    {
                                                                    Return "Datacenter1";
                                                                    }
                                                                }


Ik hoop dat men snapt waarom ik methode 2 boven methode 1 verkies. Allees: methode 2 werkt niet. Weet iemand of dit syntaxgewijs haalbaar is? Alvast bedankt.

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 10:51
YellowOnline schreef op woensdag 08 februari 2012 @ 17:18:
[...]
maar iets zoals het volgende ziet er pakken beter uit:
[...]
Daar zijn de meningen over verdeeld, ik vind het een draak :) (en het kan ook niet zo zover ik weet)
Wat is er mis met
PowerShell:
1
2
3
4
5
6
If ($DPMServer.Name -EQ "SpeciaalGeval") {
    $bla="Datacenter2"
} Else {
    $bla="Datacenter1"
}
$PSObject | Add-Member -type NoteProperty -Name Location -Value $bla

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
SteeringWheel schreef op woensdag 08 februari 2012 @ 23:05:
[...]

Daar zijn de meningen over verdeeld, ik vind het een draak :) (en het kan ook niet zo zover ik weet)
Wat is er mis met
PowerShell:
1
2
3
4
5
6
If ($DPMServer.Name -EQ "SpeciaalGeval") {
    $bla="Datacenter2"
} Else {
    $bla="Datacenter1"
}
$PSObject | Add-Member -type NoteProperty -Name Location -Value $bla
Dat is eigenlijk een goed compromis. Het gebruikt dan wel een variabele extra, maar dat is geen drama. Stom dat ik er zelf niet aan gedacht heb, maar ik was nogal gefixeerd om een oplosing te vinden binnen de parameter. Op deze manier verschuif de IF/Else wel zichtbaar uit het codeblock met de objectcreatie - en dat is tenslotte wat ik wou.

Top, bedankt voor het idee!