5

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

2 ответа2

7

Для этого перейдите в диспетчер файловых серверов, как на картинке. В этом разделе перейдите в Run и введите

fsmgmt.msc

и нажмите ввод. Как видно на рисунке, видны все общие папки и количество клиентов в разделе «Общие ресурсы» . Также вы можете увидеть имена тех, кто подключен к вашему компьютеру в разделе « Сессии», и информацию о разделе « Открытые файлы» .

Фото 1

Как и вы можете использовать

чистая доля

Команда в Windows CMD, как на рисунке два.

Фото 2

3

Существует два класса Powershell WMI, которые также могут использоваться для получения этой информации. Класс Win32_Shares покажет вам информацию о папках, которые вы открыли для общего доступа на вашем компьютере или на удаленном компьютере. Используется так:

Get-WmiObject -class Win32_Shares

Или удаленно:

Get-WmiObject -class Win32_Shares -computerName {SERVERNAME}

Вы также можете просмотреть очень специфическую информацию о соединении с объектом Win32_SessionConnection . Он будет отображать информацию о каждом подключении к активным ресурсам. Пользователь, имя компьютера и IP-адрес. Используется так:

Get-WmiObject -class Win32_SessionConnection -computerName {SERVERNAME} | Select Dependent

Выходные данные команды передаются по каналу через select, так как она сообщает больше информации, чем нужно для целей этого вопроса. Таким образом, вы можете передать его через Select-Object (сокращенный для выбора), чтобы получить определенное свойство из каждого объекта, возвращенного запросом WMI.

На нашем рабочем файловом сервере при выполнении запроса было возвращено 636 активных соединений. Вы можете получить счет, передавая вывод последней команды через Measure-Object .

Get-WmiObject -class Win32_SessionConnection -computerName {SERVERNAME} | Select Dependent | Measure-Object

Надеюсь, вы найдете эту информацию полезной.

Я взял это немного дальше ... Вот что вы можете вставить в PowerShell для вывода, что немного проще для чтения. Вам нужно будет запустить PowerShell с повышенными привилегиями для доступа к объекту Win32_SessionConnection . Обязательно измените значение переменной $server в верхней части фрагмента.

$server = 'CHANGEME' ## <--CHANGE THIS STRING VALUE

function __construct($proparray) {
    $rtnObj = new-object PSCustomObject;
    $rtnObj | add-member -type noteproperty -name 'ip' -value $proparray[0];
    $rtnObj | add-member -type noteproperty -name 'share' -value $proparray[1];
    $rtnObj | add-member -type noteproperty -name 'user'-value $proparray[2];
    return $rtnObj
}

$cnxArray = @();

gwmi win32_sessionconnection -computer $server|select dependent|% { $cnxArray += __construct([string]$_ -replace '\@\{|\}|\"|[A-Za-z\.]+=|Win32_','').split(",") }

$cnxArray;
## You may have to press enter if this last line does not process with the paste.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .