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\<имя пользователя>, если существует -- выводим имя компа.

Скачать скрипт можно отсюда.

 
1 1 1 1 1 1 1 1 1 1 Рейтинг 1.78 [37 Голоса (ов)]

Добавить комментарий