在某些情况下,对我来说,为$以外的对象分配参数并使用对象名称会更方便。也就是说,像往常一样:
$Comment = New-Object System.Windows.Forms.Label
$Comment.Text = 'Stack Overflow'
一切都很好。但是下一种方法不起作用。此方法不能分配“堆栈溢出”给对象:
$Comment = New-Object System.Windows.Forms.Label
(Set-Variable -Name Comment).Text = 'Stack Overflow'
我为什么需要这个?因为我想通过名称(字符串)而不是$选择对象。请告诉我如何分配文本(或其他参数)而不直接分配,而是通过对象名称分配?谢谢
答案 0 :(得分:2)
您可以将Get-Variable
与成员访问运算符.
结合使用来检索变量内容。
(Get-Variable -Name Comment).Value.Text = 'Stack Overflow'
由于Get-Variable
返回具有自己属性的PSVariable
对象,因此必须首先访问该对象的Value
属性,该属性包含$Comment
的值。可以通过将命令放在括号()
中来轻松完成此操作。使用此方法,在将成员访问操作应用于属性$Comment
之前,首先检索对象Text
的值。