You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何通过字符串形式的变量名操作对应对象属性

PowerShell动态操作匹配名称的WPF控件方法

失效原因

Get-Variable返回的是PSVariable类型的变量元数据对象,不是变量存储的实际WPF控件实例。直接对这个元数据对象赋值属性、或者用Add-Member给元数据对象加属性,都只是修改变量条目本身,没有触碰真正的控件对象,自然不会在界面上生效。

正确写法

访问PSVariable对象自带的.Value属性,就能拿到变量存储的实际控件实例,直接修改实例属性即可:

$grids = Get-Variable "wpfgrd*"
foreach($gridEntry in $grids){
    $actualGrid = $gridEntry.Value
    $actualGrid.Background = "#FF212123"
}

如果要防止匹配到同名但不是WPF Grid的变量引发报错,可以增加类型判断:

Get-Variable "wpfgrd*" | ForEach-Object {
    if ($_.Value -is [System.Windows.Controls.Grid]) {
        $_.Value.Background = "#FF212123"
    }
}

不要使用Invoke-Expression拼接变量名的方案实现该需求,这类写法存在脚本注入风险,直接读取PSVariable.Value是最安全的官方支持写法。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:36:24