Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288

Удаление профилей на серверах

07.03.2018, 08:51. Показов 5310. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужен скрипт который при помощи программы Delprof будет удалять профиля на машинах, которые расположены контейнере AD. В контейнере машины comp00.www.ad, comp01.www.ad, comp02.www.ad...,comp30.www.ad. Нужно удалить на всех машинах, кроме компа comp00.www.ad.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2018, 08:51
Ответы с готовыми решениями:

Удаление старых профилей по EmployeeID в AD
На сервере установлена программа, когда пользователи заходят в неё через терминальную сессию, создаются профили на втором диске D. На диске...

Параллельное удаление профилей на удаленных рабочих станциях
В продолжение темы которая уже была Есть скрипт который удаляет профили пользователей на удалённых компах $OU =...

Удаление профилей отключённых учёток
Всем доброй ночи! Очень нужна ваша помощь! Задача следующая: Есть заблокированные учётки пользователей. Есть их профили, размещённые...

15
10 / 9 / 2
Регистрация: 07.02.2018
Сообщений: 41
07.03.2018, 09:45
Нет возможности проверить, написан на коленке, но примерная картина

PowerShell
1
2
3
4
5
6
7
8
$command = 'Delprof -param1 -param2'
$computers = Get-ADComputer -Filter {Enabled -eq $true } -SearchBase "OU=computers,dc=domain,dc=ru" | ForEach-Object name
$compexceptions = @("comp1","copm2")
$finalcomputersarray = $computers | ?{$compexceptions -notcontains $_}
$Credential = Get-Credential
foreach($comp in $finalcomputersarray){
     Invoke-Command -ComputerName $comp -ScriptBlock $command -Credential $Credential   
    }
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
07.03.2018, 09:58
Цитата Сообщение от rab8bit Посмотреть сообщение
Invoke-Command
У Delprof2 есть ключ [/c:[\\]<computername>], т.е. возможно удалять профили сразу с удалённых ПК, без использования PSRemoting

Цитата Сообщение от Dimasik1989 Посмотреть сообщение
Нужен скрипт который при помощи программы Delprof будет удалять профиля на машинах, которые расположены контейнере AD.
Профили каких именно пользователей?
1
10 / 9 / 2
Регистрация: 07.02.2018
Сообщений: 41
07.03.2018, 10:22
ключ [/c:[\\]<computername>] решает проблему удалённого исполнения

профили пользователей - ещё массив
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
07.03.2018, 10:24
Лучший ответ Сообщение было отмечено Dimasik1989 как решение

Решение

Вот пример удаление профилей со всех ПК из определённой AD OU (кроме comp00), при этом:

- будут удалены все профили, которые не использовались более 30 дней
- профили, имя которых начинается с admin будут пропущены
- служебные профили не удаляются
- добавлен ключ /l, т.е. delpro2 только покажет (после строчки "The following user profiles match the deletion criteria:") какие профили могли бы быть удалены.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
$OU = "OU=computers,dc=domain,dc=ru"
 
foreach($comp in Get-ADComputer -Filter {Name -like 'comp*'} -SearchBase $OU | ? name -ne 'comp00' | select -ExpandProperty DNSHostName)
{
    if (Test-Connection $comp -Quiet -Count 2)
    {
        Write-Host $comp -f Yellow
        C:\Utils\Delprof2\DelProf2.exe /c:$comp /d:30 /ed:admin* /l
    }
    else {Write-Host "$comp not available!" -f Red}
}
1
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288
10.03.2018, 12:57  [ТС]
А если на машинки в контейнере накручена групповая политика Software Restriction Policy и после выполнения скрипта

Сбой выполнения программы DelProf2.exe: Эта программа заблокирована групповой политикой. За дополнительными сведениями обращайтесь к системному администраторустрока:8 знак:9
+ C:\DelProf2.exe /c:$comp /ed:adm* /l
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
строка:8 знак:9
+ C:\DelProf2.exe /c:$comp /ed:adm* /l
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed

Можно как нибудь проблему обойти?

Добавлено через 2 часа 50 минут
Запускаться exe должен только от администратора.

Добавлено через 16 минут
Может я ошибаюсь

Invoke-Command -ScriptBlock {Start 'C:\Utils\Delprof2\DelProf2.exe /c:$comp /d:30 /ed:admin* /l' -Verb RunAs}
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288
12.03.2018, 12:09  [ТС]
Вот так получилось, но перед выполнением срабатывает UAC с запросом на подтверждение. Возможно ли как нибудь обойти это, чтобы автоматом срабатывало ДА?
Start-Process C:\DelProf2.exe "/c:$comp /d:30 /ed:admin* /q" -Verb RunAS -WindowStyle Hidden

Добавлено через 1 час 17 минут
Отключить UAC нельзя из соображений безопасности. Просто серверов много и после каждого нажимать кнопку ДА неудобно((

Добавлено через 47 минут
И ещё один вопросик.

можно ли добавить ключи /ed:popov /ed:ivanov и т. д.?

т.е. пользователей которые входят в группу Get-ADGroupMember -Identity "Domain Admins" | where {$_.Name -like "*admin"} | ft SamAccountName

Добавлено через 5 часов 14 минут
И ещё утилита лежит на каждом компе в контейнере. вот попытался написать команду, но не работает

Invoke-Command -ScriptBlock {Start "C:\DelProf2.exe" "/c:$comp /ed:dimadm* /q" -Verb RunAS -WindowStyle Hidden} -ComputerName $comp
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
12.03.2018, 12:14
Лучший ответ Сообщение было отмечено Dimasik1989 как решение

Решение

Цитата Сообщение от Dimasik1989 Посмотреть сообщение
И ещё утилита лежит на каждом компе в контейнере. вот попытался написать команду, но не работает
Invoke-Command -ScriptBlock {Start "C:\DelProf2.exe" "/c:$comp /ed:dimadm* /q" -Verb RunAS -WindowStyle Hidden} -ComputerName $comp
В этом случае не нужен ключ [/c:[\\]<computername>], т.к. DelProf2 работает локально.
1
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288
12.03.2018, 13:25  [ТС]
А можете помочь по вопросу который выше написал? Есть ключ /ed:admin* для утилиты. И есть список администраторов (например popov, petrov, ivanov), который выводится через Get-ADGroupMember -Identity "Domain Admins" | where {$_.Name -like "*admin"} | ft SamAccountName
Можно ли подставить каждого админа из этого списка чтобы получилось C:\DelProf2.exe /d:30 /ed:popov /ed:petrov /ed:ivanov /l ?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
12.03.2018, 14:08
Цитата Сообщение от Dimasik1989 Посмотреть сообщение
Можно ли подставить каждого админа из этого списка
Примерно так:

PowerShell
1
2
3
4
5
6
7
$param = '/d:30 /l /ed:admin* '
(Get-ADGroupMember -Identity "Domain Admins" | ? Name -Like '*admin').SamAccountName | %{$param += "/ed:$_ "}
 
foreach ($comp in $computers)
{
    Invoke-Command -ComputerName $comp {start 'C:\Soft\DelProf2.exe' -ArgumentList $args -verb runAs} -ArgumentList $param    
}
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288
12.03.2018, 14:30  [ТС]
KDE777, мне не понятно -ArgumentList $args (в эту переменную что то должно быть записано?)

Добавлено через 4 минуты
Сейчас просто нет возможности проверить, а так работать не будет?

PowerShell
1
2
3
4
$param = '/d:30 /l /ed:admin* ' 
(Get-LocalUser).name | %{$param += "/ed:$_ "}
 
Invoke-Command -ScriptBlock {Start 'C:\DelProf2.exe' $param -Verb RunAS -WindowStyle Hidden} -ComputerName $comp
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
12.03.2018, 14:50
Цитата Сообщение от Dimasik1989 Посмотреть сообщение
мне не понятно -ArgumentList $args (в эту переменную что то должно быть записано?)
PowerShell
1
Get-Help Invoke-Command -Parameter ArgumentList
PS-сессия на удалённом ПК ничего не знает о ваших локальных переменных. С помощью ключа -ArgumentList вы передаёте нужную переменную (или несколько, или сразу значение) в скрипт-блок Invoke-Command. Всё что вы передали через -ArgumentList попадёт в $args
0
Джоуи
 Аватар для Joey
1083 / 645 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
12.03.2018, 22:28
Dimasik1989, при отправке сообщения есть (снизу) опция Отключить смайлы в тексте
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 288
13.03.2018, 06:06  [ТС]
Собственно вот сам скрипт
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$OU = "OU=computers,dc=domain,dc=ru"
 
$param = "/q /ed:admin "
(Get-ADGroupMember -Identity "Domain Admins" | ? Name -Like '*admin').SamAccountName | %{$param += "/ed:$_ "}
 
foreach($comp in Get-ADComputer -Filter {Name -like '*comp*'} -SearchBase $OU | ? name -NotLike '*comp00' | select -ExpandProperty DNSHostName)
{
    if (Test-Connection $comp -Quiet -Count 2)
    {
        Write-Host $comp -f Yellow
        Invoke-Command -ScriptBlock {Start 'C:\DelProf2.exe' -ArgumentList $args -verb runAs} -ArgumentList $param -ComputerName $comp
    }
    else {Write-Host "$comp not available!" -f Red}
    }
Выполняется без ошибок, но по факту ничего не происходит, профили не удаляются:(

Добавлено через 30 минут
Даже не выполняется Invoke-Command -ScriptBlock {Start C:\DelProf2.exe /q -verb runAs} -ComputerName comp01

Добавлено через 48 минут
А если я выполняю так:

Invoke-Command -ScriptBlock {& "C:\DelProf2.exe" $args} -ArgumentList $param -ComputerName 'comp01'

То консоль выдаёт:

Unknown parameter: </q /ed:admin /ed:popov /ed:ivanov /ed:petrov >.
Type 'Delprof2 -help' for help.

Добавлено через 44 минуты
А на самом компе

Start 'DelProf2.exe' -WorkingDirectory 'C:\' -ArgumentList $param -verb runAs выполняется
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
13.03.2018, 10:14
Цитата Сообщение от Dimasik1989 Посмотреть сообщение
Выполняется без ошибок, но по факту ничего не происходит, профили не удаляются
Цитата Сообщение от Dimasik1989 Посмотреть сообщение
А если на машинки в контейнере накручена групповая политика Software Restriction Policy и после выполнения скрипта
Сбой выполнения программы DelProf2.exe: Эта программа заблокирована групповой политикой. За дополнительными сведениями обращайтесь к системному администратору
Не работает через Invoke-Command, тогда последуйте совету "обращайтесь к системному администратору" и если это так нужно, пусть для вашего ПК разрешат использование DelProf2.exe Тогда вместо Invoke-Command вам будет достаточно ключа [/c:[\\]<computername>]
0
Джоуи
 Аватар для Joey
1083 / 645 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
13.03.2018, 14:56
Dimasik1989, Вы хоть прочли мое сообщение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2018, 14:56
Помогаю со студенческими работами здесь

IP на серверах
Всем привет! Ребят вот при работе с сервером удаленно нужен его внешний IP (ну к которому удаленно хоть откуда можно подключиться), а так...

Переустановка GUID на серверах
Два сервера, на обоих рейд-зеркало. Первый проинсталлировался с нуля. Винчестер со второго воткнули в рейд первого, он синхронизировался....

Хостинг на виртуальных серверах
Какой программой пользуются хостеры, которые предоставляют сервера на виртуальных машинах?

Cookies на разных серверах
Прочитал, что куки записываются на жесткий диск и 'активизируются' при запросе именно к этому сайту. А вот зашел на сайт первый раз и...

Очистить DNS на серверах
Добрый день Имеется физический сервер Terminal, виртуальные: DC, Exchange, Gateway. Почта работает нормально, отправляет, принимает....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru