#powershell
Вопрос:
Я пытаюсь получить имя пользователя из Get-AppxPackage. К сожалению, это свойство вложено довольно глубоко. В моей голове это было бы что-то вроде этого (но это не работает):
Get-AppxPackage -Allusers | select $_.PackageUserInformation.UserSecurityID.Username | where-object {$_.PackageUserInformation.UserSecurityID.UserName -notlike "defaultuser*"}
В имени пользователя может быть либо 1, либо 2 элемента, в зависимости от упаковки. Если есть 2 элемента, я хочу поместить тот, который не похож на » defaultuser*», в переменную в виде строки.
Running Get-AppxPackage -Allusers | where-object {$_.PackageUserInformation.UserSecurityID.UserName -like "defaultuser*"}
Следует вернуть некоторые примеры пакетов с несколькими элементами имени пользователя, встроенными в Windows 10.
Комментарии:
1. Итак, вы просто хотите вернуть только одно имя пользователя?
Ответ №1:
Сначала отфильтруйте свой объект, затем выберите и выведите результат — вы можете выбрать «вложенные» свойства, используя вычисляемую структуру свойств:
$PackagesAndUsers = Get-AppxPackage -Allusers | Where-Object { $_.PackageUserInformation.UserSecurityID.UserName -notlike "defaultuser*"} | Select Name, @{N='UserName';E={$_.PackageUserInformation.UserSecurityID.UserName}}
Теперь у вас есть все пакеты и пользователи в одном объекте, который исключает defaultuser*
Из $PackagesAndUsers
— вы можете выбрать все, что вам нравится, из этого, чтобы заполнить свою строку.
Имейте в виду, что в поле Имя пользователя все еще может быть несколько пользователей, если на вашем компьютере несколько пользователей