我正在尝试为winform对象定义变量:$Textbox_serverDNS1、$Textbox_serverDNS2、$Textbox_serverDNS3
我尝试使用这个语法,但它现在工作:
for ($i=1; $i -le 3; $i++){
Set-Variable -Name "TextBox_ServerDNS$($i)" -Value (New-Object -TypeName System.Windows.Forms.TextBox -Property @(Text = "10.10.10.$i")) -Scope Global
}
你知道我该怎么定义它吗
谢谢,
2条答案
按热度按时间flvlnr441#
唯一需要修复的命令是将
-Property @(Text = "10.10.10.$i")
替换为-Property @{ Text = "10.10.10.$i" }
,即你需要传递一个带有属性 name-value pairs 的hashtable(@{ ... }
),而不是一个 array(@(...)
)。New-Object
将-Property
参数显示为IDictionary
(-interface)类型,这意味着必须传递一个类似于 dictionary-like 的对象(如[hashtable]
示例)。但是,您可以简化您的方法,如下所示:
请注意将哈希表转换为目标类型的方便功能,这隐式地构造了一个示例(假设是一个无参数的构造函数),并根据哈希表的条目修改其属性。
退一步:
***而不是创建 * 单个变量 *,最好构造一个存储示例的 * 数组 * 变量 *;下面的示例使用
$script:
作用域而不是全局作用域:更新:
TextBox
示例的文本。Get-Variable
来间接检索变量值,如下所示。9w11ddsr2#
这样的怎么样?
我会仔细检查,以确保你加载的是正确的类型/程序集。