Как вы удаляете профили пользователей в powershell? - PullRequest
0 голосов
/ 11 февраля 2020

Я пишу скрипт powershell для удаления профилей пользователей и понимаю, что метод, который я использую, не самый лучший. Мне было интересно, что будет лучшим способом сделать это? Я все еще очень плохо знаком с PowerShell, но я хочу выучить

Код, который у меня уже есть:

$ErrorActionPreference= 'silentlycontinue'
$Users = Get-WmiObject -Class Win32_UserProfile
$IgnoreList = "helpdesk", "administrator", "Default"

:OuterLoop
foreach ($User in $Users) {
    foreach ($name in $IgnoreList) {
        if ($User.localpath -like "*\$name") {
            continue OuterLoop
        }
    }

    $User.Delete()
}

1 Ответ

0 голосов
/ 12 февраля 2020

ПОЧЕМУ скрипт, когда корпоративный подход - GPO.

Как удалить старые профили пользователей с помощью GPO и PowerShell?

Нет причин Чтобы сделать это с нуля, используйте то, что предоставили другие ...

Используйте PowerShell для удаления локальных профилей

Как удалить профили пользователей старше указанного количества дней в Windows

... а также модули из MS powershellgallery.com, поскольку вы смотрите на любой подход, который решите использовать.

Find-Module -Name '*user*profile*' | Format-Table -AutoSize

<#
# Results

Version Name                               Repository Description
------- ----                               ---------- -----------
1.0     UserProfile                        PSGallery  This module manages user profiles on local and remote computers
0.1.1   Microsoft.Graph.Users.ProfilePhoto PSGallery  Microsoft Graph PowerShell Cmdlets
1.0.6   Get-UserProfile                    PSGallery  The Get-UserProfile module list or remove User Profiles from local
#>

Find-Module -Name '*userprofile*' | Format-List -Force

Обновление

Тем не менее, вы специально сказали ...

'Я понимаю, что метод, который я использую, не самый лучший. Мне было интересно, что было бы лучшим способом сделать это?

... и что мы все предложили, использование GPO - лучший способ, нормальный общепринятый в отрасли способ сделать это. Не пишите сценарии, если у вас нет другого выбора. Windows AD сделает это за вас.

Не изобретайте колесо, если вы не знаете, что оно действительно лучше. В обучении, конечно, есть обучение, проба и ошибка, но учиться и использовать из источников, которые уже сделали это. Есть множество примеров во всем Интернете для этого варианта использования. Просто ищите это. Нет причин делать это с нуля.

'powershell remove профили пользователей'

Которые показывают, что вы уже делаете ... Пример (s) - готовые сценарии для этого варианта использования через Ms powershellgallery.com.

Использование PowerShell для удаления профиля пользователя (пошаговое руководство)

Get-CimInstance -ComputerName SRV1,SRV2,SRV3 -Class Win32_UserProfile | 
Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | 
Remove-CimInstance

Remove-UserProfile - удаление локальных профилей пользователей и очистка C: \ Users Directory

Этот скрипт содержит функцию (Remove-UserProfile), которая используется для удалить профили пользователей и дополнительное содержимое каталога C: \ Users (если указан) на локальном компьютере.

Загрузить: Remove-UserProfile.ps1

Удаление неиспользуемых пользовательских профилей на локальном компьютере (PowerShell)

Скрипт Удаление пользовательских профилей на нескольких серверах v2

И с использованием модулей, которые Вы видите из приведенных выше команд, это не то, что делать в дальнейшем. Они находятся в / доступны от MS и в PowerShell напрямую по причине. Все, что вы используете в PowerShell - это модули, размещенные на вашем компьютере, а также модули, которые вы загружаете и устанавливаете с MS и других ресурсов.

Опять же, используйте встроенные корпоративные инструменты в Windows или других выбранных ОС. как и было задумано, и если они не обеспечивают то, что вам нужно, то обратите внимание на другие варианты, такие как сценарии на уровне объекта, который корпоративный инструмент не раскрывает в своем GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...