PowerShell如何处理数组对象的未知属性?
获取Import-Excel导入对象的未知属性名称
要提取$user对象中除已知Username外的所有属性名,有两种高效实现方式:
方法1:使用Get-Member
通过Get-Member筛选属性类型,排除Username后提取属性名:
$Path = "c:\it\test.xlsx" $Users = Import-Excel -Path $Path -WorksheetName 'Routendruck' -StartColumn 1 -StartRow 3 foreach ($user in $Users) { $userSAM = $user.Username # 获取所有非Username的属性名数组 $folderProperties = $user | Get-Member -MemberType NoteProperty | Where-Object { $_.Name -ne 'Username' } | Select-Object -ExpandProperty Name # 遍历属性数组获取对应权限值 foreach ($prop in $folderProperties) { $permission = $user.$prop # 示例输出:可根据需求替换为其他处理逻辑 Write-Host "用户 $userSAM 对文件夹 $prop 的权限:$permission" } }
方法2:直接访问PSObject.Properties
通过对象的PSObject.Properties直接获取属性集合,效率比Get-Member更高:
$Path = "c:\it\test.xlsx" $Users = Import-Excel -Path $Path -WorksheetName 'Routendruck' -StartColumn 1 -StartRow 3 foreach ($user in $Users) { $userSAM = $user.Username # 筛选并提取非Username的属性名 $folderProperties = $user.PSObject.Properties | Where-Object { $_.Name -ne 'Username' } | Select-Object -ExpandProperty Name # 遍历属性获取权限值 foreach ($prop in $folderProperties) { $permission = $user.$prop # 自定义后续处理逻辑 "$userSAM | $prop | $permission" } }
两种方法最终都会得到存储所有文件夹路径属性名的数组$folderProperties,之后通过$user.$prop即可像你示例中那样获取对应权限值。
内容的提问来源于stack exchange,提问作者Darmachakra
相关产品推荐
相关产品推荐

