分配不带$

时间:2019-12-22 14:16:50

标签: powershell

在某些情况下,对我来说,为$以外的对象分配参数并使用对象名称会更方便。也就是说,像往常一样:

$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'

我为什么需要这个?因为我想通过名称(字符串)而不是$选择对象。请告诉我如何分配文本(或其他参数)而不直接分配,而是通过对象名称分配?谢谢

1 个答案:

答案 0 :(得分:2)

您可以将Get-Variable与成员访问运算符.结合使用来检索变量内容。

(Get-Variable -Name Comment).Value.Text = 'Stack Overflow'

由于Get-Variable返回具有自己属性的PSVariable对象,因此必须首先访问该对象的Value属性,该属性包含$Comment的值。可以通过将命令放在括号()中来轻松完成此操作。使用此方法,在将成员访问操作应用于属性$Comment之前,首先检索对象Text的值。