Windows: Powershell-скрипт для поиска папки с профилем пользователя по всем компам в домене.
Картина маслом -- организация компов на 150, домен. Спустя год после увольнения сотрудника выясняется что у него на рабочем столе остался очень важный файлик и его нужно срочно найти. Профили пользователей не перемещаемые, хранятся на компах. Беда в том, что за давностью времен никто не помнит за каким компом сидел сотрудник. Под эту задачу ваш покорный слуга запилил нехитрый скрипт, который проверяет наличие папки с профилем пользователя с помощью скрытой шары доступной для администраторов (папка C$).
Текст скрипта:
Import-Module activedirectory
$name_user = read-host "Введите логин пользователя"
$Comp_s = Get-ADComputer -Filter * -Properties *
ForEach ($name_comp in $Comp_s)
{if (Test-Path ("\\" + $name_comp.Name + "\C$\Users\" + $name_user)) {$name_comp.Name}}
pause
Нюансы:
В конторе не было компов на Windows XP, поэтому проверяется только наличие папки C:\Users\<имя пользователя>, для компов с XP нужно проверять C:\Documents & Settings\<имя пользователя>. Скрипт работает на powershell v5.1, если версия ниже желательно обновиться (Windows Server 2008 R2: Обновить версию Powershell.).
Пояснения:
Import-Module activedirectory
Импортируем модуль для работы с AD.
$name_user = read-host "Введите логин пользователя"
сохраняем введенное с клавиатуры имя пользователя в переменную name_user
$Comp_s = Get-ADComputer -Filter * -Properties *
сохраняем список всех компов в домене в переменную Comp_s
ForEach ($name_comp in $Comp_s)
{if (Test-Path ("\\" + $name_comp.Name + "\C$\Users\" + $name_user)) {$name_comp.Name}}
для каждого компа из переменной Comp_s проверить существование папки \\<имя компа>C$\Users\<имя пользователя>, если существует -- выводим имя компа.
Скачать скрипт можно отсюда.
Комментарии
RSS лента комментариев этой записи