gpt4 book ai didi

powershell - 我可以在自定义DSC资源中的get,set,test方法之间共享变量吗?

转载 作者:行者123 更新时间:2023-12-03 00:14:18 26 4
gpt4 key购买 nike

我有一个简单的问题。我一直在尝试使用Powershell DSC,并且创建了一个自定义资源来更改客户端计算机的CD驱动器号。

我当前的代码可以运行,但是我想看看它是否可以更高效。请参阅下面的代码:

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

}

}

我的问题是关于以下重复行:
$This.CurrentCDDriveLetter = $This.CheckCurrentDriveLetter()

如您所见,此信息收集在Set,Get和Test方法中。

是否可以一次收集此信息并在其他方法之间共享此信息?

因此,我将在Test方法中收集信息,并将此信息传递给Set方法?我想这样做实际上不会对当前资源产生太大影响,但是我仍然想知道是否有可能,因此我可以在将来的资源中使用它来使它们尽可能高效。

提前致谢!

亲切的问候,
鲍勃·史密恩克

最佳答案

您不应假定每次DSC运行资源时都将拥有相同的实例。因此,没有好的方法来使实例字段或实例属性在两次执行之间持久存在。

如果该值对于计算机是静态的,则可以尝试将其存储在静态字段中,但是同样不要假定方法的调用顺序。

关于powershell - 我可以在自定义DSC资源中的get,set,test方法之间共享变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com