Удалить пользователя с фильтром на основе SID - PullRequest
0 голосов
/ 05 октября 2018

У меня есть несколько машин с большим количеством профилей, и я хотел бы удалить все из них, кроме 3, которые являются администраторами.

это бы сработало, если бы я хотел удалить все

Get-WMIObject -Class Win32_USerProfile -ComputerName $computer | Remove-WmiObject

Я пытался сделать это с помощью предложения where и -filter, но не смог успешно.

Вот несколько примеров

Get-WMIObject -Class Win32_UserProfile -ComputerName $computer | where {($.SID -neq $UserSID)} | Remove-WMIObject

...

Get-WMIObject -Class Win32_USerProfile -ComputerName $computer -Filter "SID = TEST" | Remove-WmiObject

РЕДАКТИРОВАТЬ: Я почти получил это так:

 Get-WMIObject -Class Win32_USerProfile -ComputerName $computer | Where-Object -FilterScript {$_.SID -ne "S-1-5-18" -and $_.SID -ne "S-1-5-19" -and $_.SID -ne "S-1-5-20"} |Remove-WmiObject -WhatIf

Таким образом, я могу отфильтровать вывод, но я получил исключение

+ CategoryInfo          : NotSpecified: (:) [Remove-WmiObject], ArgumentException

1 Ответ

0 голосов
/ 05 октября 2018
$UserSID = 'S-1-5-18'
Get-WMIObject -Class Win32_UserProfile -ComputerName $computer | where {$_.SID -ne $UserSID} | Remove-WmiObject -WhatIf
Get-WMIObject -Class Win32_USerProfile -ComputerName $computer -Filter "SID != '$UserSID'" | Remove-WmiObject -WhatIf
...