J'ai une question simple. J'ai expérimenté avec Powershell DSC et j'ai créé une ressource personnalisée pour changer la lettre de lecteur de CD d'une machine cliente.Puis-je partager des variables entre les méthodes get, set et test dans une ressource DSC personnalisée?
Mon code actuel fonctionne, mais j'aimerais voir si cela peut être plus efficace. Voir mon code ci-dessous:
enum Ensure
{
Absent
Present
}
[DscResource()]
class ChangeCDDriveLetter {
[DscProperty(Key)]
[string]$RequiredCDDriveLetter
[DscProperty(NotConfigurable)]
[string]$CurrentCDDriveLetter
[DscProperty(NotConfigurable)]
[string]$CurrentCDVolume
[ChangeCDDriveLetter] Get() {
$This.CurrentCDDriveLetter = $This.CheckCurrentDriveLetter()
$This.CurrentCDVolume = $This.CheckCurrentVolume($This.CurrentCDDriveLetter)
Return $This
}
[Void] Set(){
$This.CurrentCDDriveLetter = $This.CheckCurrentDriveLetter()
$This.CurrentCDVolume = $This.CheckCurrentVolume($This.CurrentCDDriveLetter)
mountvol $This.CurrentCDDriveLetter /d
mountvol $This.RequiredCDDriveLetter $This.CurrentCDVolume
}
[bool] Test(){
$This.CurrentCDDriveLetter = $This.CheckCurrentDriveLetter()
$This.CurrentCDVolume = $This.CheckCurrentVolume($This.CurrentCDDriveLetter)
Write-Verbose ("Current CD drive letter is: " + $This.CurrentCDDriveLetter)
if ($This.CurrentCDDriveLetter -ne $This.RequiredCDDriveLetter){
Write-Verbose ("The CD drive letter should be: " + $This.RequiredCDDriveLetter)
Write-Verbose ("Setting the CD drive letter to: " + $This.RequiredCDDriveLetter)
Return $False
}
else {
Write-Verbose "This is the correct drive letter."
Return $True
}
}
[string] CheckCurrentDriveLetter(){
$CurrentDriveLetter = (Get-WmiObject win32_logicaldisk -filter 'DriveType=5').DeviceID
return $CurrentDriveLetter
}
[string] CheckCurrentVolume($DriveLetter){
$Volume = (mountvol $DriveLetter /l).Trim()
Return $Volume
}
}
Ma question est sur la ligne récurrente suivante:
$This.CurrentCDDriveLetter = $This.CheckCurrentDriveLetter()
Comme vous pouvez le voir, ces informations sont recueillies dans le Set, Get et méthodes d'essai .
Est-il possible de rassembler cette information une fois et de partager cette information avec les autres méthodes?
Donc, je regrouperais les informations dans la méthode de test, et passerais cette information à la méthode Set? Je suppose que cela n'aura pas vraiment d'effet sur la ressource actuelle, mais j'aimerais quand même savoir si c'est possible afin que je puisse l'utiliser dans les ressources futures pour les rendre aussi efficaces que possible.
Merci d'avance!
Cordialement, Bob Smienk