Gor*_*don 5 powershell object self
我可以用这样的四个属性创建一个对象
$pocketKnife = New-Object PSObject -property @{
Color = 'Black'
Weight = '55'
Manufacturer = 'Buck'
Blades = '1'
}
Run Code Online (Sandbox Code Playgroud)
并且基本上按预期工作.但是,我似乎无法理解如何添加引用对象自己的属性的方法.我可以加上这个
$pocketKnife | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($pocketKnife.Color)"
}
Run Code Online (Sandbox Code Playgroud)
然后我可以调用$ pocketKnife.GetColor()并按预期工作.但是我必须将对象引用硬连接到方法中,并且实际上我引用了在对象本身之外定义的对象变量.我想做的是
$pocketKnife | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($Self.Color)"
}
Run Code Online (Sandbox Code Playgroud)
最后,我想创建一个Logger对象,它将初始化自身并在属性中建立适当的日志文件名,并且具有一个采用字符串参数的Log方法,并且在调用时它会记录到属性中的日志文件.我觉得这可能不仅仅是PowerShell真正打算面向对象.就像我应该将我的(自定义)对象的概念限制为结构的数据,而不是类和实例?FWIW,我对OOP足够新,我不知道我不知道什么.我所知道的是,现在我正在使用全局变量作为日志文件路径,以及引用它的init和log函数,我正在寻找消除全局变量的最佳方法,并且还使用PS来实现它的潜力,并在我学习时学习一些编程概念.而且我的所有Google Fu最终都会获得有关对象属性的更多信息,而不仅仅是简单示例之外的方法,它们会回显一些文本以证明您在方法中.因此,任何建议都非常感谢,即使它只是"不是那个树"
谢谢!
Fro*_* F. 11
PowerShell和C#非常相似.this当PowerShell使用时,C#用于引用当前实例/本身$this
$此
在定义脚本属性或脚本方法的脚本块中,$ This变量引用正在扩展的对象.
样品:
$pocketKnife2 = New-Object PSObject -property @{
Color = 'Black'
Weight = '55'
Manufacturer = 'Buck'
Blades = '1'
}
$pocketKnife2 | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($this.Color)"
}
$pocketKnife2.GetColor()
Color = Black
$pocketKnife2.Color = 'Red'
$pocketKnife2.GetColor()
Color = Red
Run Code Online (Sandbox Code Playgroud)