![]() |
Сведения об IP
День добрый! Возникла потребность в сборе логов при авторизации пользователей в систему в домене. Сейчас реализован механизм по средствам logon через переменные (set, echo)
"\\server\папка\%date%_logon.txt" echo %TIME% ^| %COMPUTERNAME% ^| %USERNAME% Метод удобен тем , что у пользователя при входе в сеанс в домене срабатывает logon и происходит запись лога в отельный файл где указано в какое время, какой пользователь авторизовался на каком АРМ. Но минус этого, что на предприятии стоит динамические ip парой приходится выяснять по ip адресу кто работал на АРМ. Может есть у кого готовое решение, как можно собирать в отдельный файл логирование типа - Дата|Компьютер|Доменная УЗ пользователя|IP адрес АРМ. Будь это метод сбора данных через logon или GPO |
Цитата:
|
Powershell:
Код:
"$((get-date).ToString())|$($env:computername)|$($env:username)|$((Get-NetIPAddress |? InterfaceIndex -eq (Get-NetAdapter -Physical).ifindex).ipaddress)" >> "\\server\папка\$($env:username)_logon.txt" |
Цитата:
|
Можно так попробовать, чтобы работало и для нескольких адресов:
Код:
"$((get-date).ToString())|$($env:computername)|$($env:username)|$((Get-NetIPAddress |? InterfaceIndex -in (Get-NetAdapter -Physical).ifindex).ipaddress -join(", "))" >> "\\server\папка\$($env:username)_logon.txt" |
Вложений: 1
Цитата:
|
Код:
"$((get-date).ToString())|$($env:computername)|$($env:username)|$((Get-NetIPAddress |? {$_.InterfaceIndex -in (Get-NetAdapter -Physical).ifindex -and $_.AddressFamily -eq 'IPv4'}).ipaddress -join(", "))" >> "\\server\папка\$($env:username)_logon.txt" |
Спасибо! Такой вопрос еще, на windows 7 возможно сделать чтобы этот скрипт отрабатывался ?
|
Да, установить туда Powershell 5.1, который входит в состав WMF 5.1. Через GPO с WMI-фильтром на Windows 7 разливается без проблем.
|
Цитата:
powershell -ExecutionPolicy Bypass -File \\сервер\Logon\AD_Log.ps1 Get-NetIPAddress : The term 'Get-NetIPAddress' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of th e name, or if a path was included, verify that the path is correct and try agai n. At \\сервер\Logon\AD_Log.ps1:8 char:68 + ... ())|$($env:computername)|$($env:username)|$((Get-NetIPAddress |? {$_. ... + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-NetIPAddress:String) [], Co mmandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Так понимаю, в Windows 7 он не понимает данные параметры, при вводе данной команды он выводит сведения о сетевке Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = True' там есть параметр IPAddress Вот эта команду выводит правильный ip адрес, но как сделать чтобы записывал его в файл, не пойму. (Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = True').IPAddress[0] |
Мда, упустил из виду тот момент, что не всё ограничивается версией PS...
Вот: Код:
"$((get-date).ToString())|$($env:computername)|$($env:username)|$((gwmi Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = True').ipaddress -notmatch ':' -join(", "))" >> "\\server\папка\$($env:username)_logon.txt" |
Цитата:
|
Цитата:
При этом срипт не отрабатывается, по логам системы выявлено, что ошибка сценария возвращается с кодом ошибки 4294770688. Все права на расположение добавлены, вычитал что может возникать при отсутствии двойных кавычек. Что может быть еще не так? |
Из ключей надо оставить только -ExecutionPolicy Bypass
Политика привязать к пользователю, а не к компу. На вкладке сценария входа в систему выбрать вкладку "сценарии Powershell" и указывать только путь к нему в расшаренной папке. |
Вложений: 1
Цитата:
|
Да.
|
Цитата:
|
Время: 23:51. |
Время: 23:51.
© OSzone.net 2001-