Как отфильтровать, каким пользователям разрешено входить на компьютер? - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно проанализировать информацию о пользователях, чтобы выяснить, к каким компьютерам имеет доступ конкретный пользователь, а затем отфильтровать ее, чтобы сгенерировать txt-документацию для каждого компьютера, в которой перечислены разрешенные пользователи для этого компьютера.Однако мой сценарий не возвращает ожидаемых результатов и создает неполные списки.

Get-Content c:\temp\computers.txt | ForEach-Object {
    $computername = $_
    Get-ADUser -Filter "LogonWorkstations -like '*$computername'" -Properties LogonWorkstations |
        Format-Table SamAccountName, Enabled |
        Out-File -FilePath c:\temp\Accounts\"$computername-$fileDate".txt
}

Я вполне уверен, что проблема заключается в моей фильтрации, поскольку некоторые файлы возвращают информацию, однако только в тех, гдеимя пользователя совпадает с именем компьютера в некотором отношении.Вместо того, чтобы перечислять пользователей, чья «LogonWorkstation» включает в себя указанный компьютер, именно это я и собираюсь сделать.(Если я извлекаю «LogonWorkstation» пользователя отдельно, эта информация верна.)

1 Ответ

1 голос
/ 01 мая 2019

Я считаю, что проблема в том, что свойство logonworkstations хранит список компьютеров в виде строки, а не коллекции.Поскольку параметр -Filter имеет ограниченные операторы, вам нужно будет использовать -like, чтобы вводить символы подстановки.Затем вы можете использовать любой метод для построения строки имени вашего компьютера, включающей в себя окружающие звездочки.

Get-Content c:\temp\computers.txt |

ForEach-Object {    
    Get-ADUser -Filter "LogonWorkstations -like '*$_*'" -Properties LogonWorkstations |
        Format-Table SamAccountName, Enabled |
        Out-File -FilePath c:\temp\Accounts\"$_-$fileDate".txt
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...