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

如何从Get-AppxPackage返回对象的嵌套子属性中提取用户名?

PowerShell 获取AppxPackage非defaultuser用户名解决方案

原写法错误原因

你原有写法中Select $_.PackageUserInformation.UserSecurityID.Username逻辑无效:Select-Object默认接收属性名作为参数,管道传递到该命令时$_尚未绑定到当前对象,最终会返回全量属性,不会提取到嵌套的用户名属性。

适配需求的正确写法

需求场景:提取所有不匹配defaultuser*规则的用户名存入变量

不管单个应用包对应1个还是2个用户名,以下命令会自动遍历所有用户名、过滤符合要求的结果存入变量:

$validUsernames = Get-AppxPackage -AllUsers | ForEach-Object {
    # 遍历当前包所有用户名,过滤排除defaultuser前缀的项
    $_.PackageUserInformation.UserSecurityID.UserName | Where-Object { $_ -notlike "defaultuser*" }
}

如果需要对结果去重,可以在末尾加| Select-Object -Unique:

$validUsernames = Get-AppxPackage -AllUsers | ForEach-Object {
    $_.PackageUserInformation.UserSecurityID.UserName | Where-Object { $_ -notlike "defaultuser*" }
} | Select-Object -Unique

扩展场景:保留应用包信息同时关联有效用户名

如果需要同时获取应用包名称、发布者等信息和对应的非defaultuser用户名,可使用计算属性实现:

$appWithValidUser = Get-AppxPackage -AllUsers | Select-Object Name, Publisher, @{
    Name = "ValidUsername"
    Expression = {
        $_.PackageUserInformation.UserSecurityID.UserName | Where-Object { $_ -notlike "defaultuser*" }
    }
} | Where-Object ValidUsername # 过滤掉没有有效用户名的条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:57:00