Как отфильтровать ProfileList с подстановочными знаками - PullRequest
0 голосов
/ 31 декабря 2018

Я пишу скрипт, который поможет упростить удаление списков профилей пользователей на наших серверах Citrix.Я не могу понять, как фильтровать ProfileImagePath по групповым символам.

На наших серверах Windows 2008 в Regedit я могу искать и сортировать список профилей пользователей, включая его Profileimagepath, но при этом получаются все пользователи, которые, похоже, не могут расширяться.этот фильтр возвращает только подстановочные записибыли просто результаты подстановочного знака. В идеале, я хочу вернуть только те имена пользователей, которые я ввел в шаблон.

1 Ответ

0 голосов
/ 31 декабря 2018

Код, который вы разместили, совершенно не работает.Пожалуйста, найдите руководство по PowerShell, прежде чем продолжить.

  • Set-Location не производит вывод, и даже если бы он это сделал, передача вывода командлета в строку вообще ничего не сделает.
  • Вы не должны переносить операторы в произвольных местах, как в примере кода.
    • Обернутая строка пути реестра сохранит встроенную новую строку (таким образом, не соответствует тому, что вы хотите, чтобы она соответствовала).
    • Помещение аргумента оператора Select-Object в следующую строку без экранированияnewline будет запускать Select-Object без аргументов и аргументов как отдельный оператор (что, скорее всего, приведет к ошибке, поскольку аргументы сами по себе не являются допустимым оператором).
  • = является оператором присваивания в PowerShell. Сравнение операторы: -eq (равенство), -like (совпадения с подстановочными знаками) и -match (совпадения с регулярными выражениями).
  • Вам необходимо Where-Object для фильтрации конвейерных объектов,не Select-Object.Последний предназначен для выбора объекта properties .

Возможно, вы хотели сделать что-то вроде этого:

$username    = '...'
$profilePath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'

Get-ChildItem $profilePath | Where-Object {
    (Get-ItemProperty $_.PSPath).ProfileImagePath -like "*${username}*"
}

или (проще), например:

$username    = '...'
$profilePath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'

Get-ChildItem $profilePath |
    Get-ItemProperty |
    Where-Object { $_.ProfileImagePath -like "*${username}*" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...