Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

num1984

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[more] Приветствую Вас господа! На форуме новенький, однако зыркаю что имеются знающие люди...может кто поможет?
Суть вот в чем...написал я как то скрипт на powershell, который цепляет эвенты принт сервера с id 307 и id 805 соответственно. Все бы и ничего, но начальству понадобилось вдруг что б вместе с samaccountname, которое вытаскивается из 307 эвента прит сервера, так же из самой active directory бралось значение office...и, в тот же лог, соответственно, записывалось. Вопрос...можно ли сие сделать и, если не трудно, никто не подскажет -  как??
 ---------------------------------------------------------------------------------------------------------
Сам скрипт:
 
$a3 =  Measure-Command -Expression {
 
$workpath = "C:\parslog\logs\work"
 
$logname = "306EV%"
$logname3 = "805EV%"
$logname5 = "printlog%"
 
$logname1 = [System.Web.HttpUtility]::UrlEncode($logname)
$logname2 = [System.Web.HttpUtility]::UrlEncode($logname3)
$logname4 = [System.Web.HttpUtility]::UrlEncode($logname5)
 
$Now = [System.DateTime]::Now
$filedate = $Now.ToString("yyyy.MM.dd_HH mm")
 
$out_evt_file = "$workpath\$logname1-$filedate.evtx"
$out_evt_file1 = "$workpath\$logname2-$filedate.evtx"
$out_csv_file = "$workpath\$logname1-$filedate.csv"
$out_csv_file1 = "$workpath\$logname2-$filedate.csv"
$out_csv_filetogether = "$workpath\$logname5-$filedate.csv"
 
#wevtutil.exe cl $logname /BU:$out_evt_file /uni:true
#wevtutil.exe cl Microsoft-Windows-PrintService/Operational /BU:c:\install\printaudit\work\filedate.evtx /uni:true
wevtutil.exe Export-Log Microsoft-Windows-PrintService/Operational C:\parslog\logs\work\filedate.evtx /ow:true
wevtutil.exe Export-Log Microsoft-Windows-PrintService/Operational C:\parslog\logs\work\filedate1.evtx /ow:true
 
$query = "*[System[(Level=4 or Level=0) and (EventID=307)]]"
$query1 = "*[System[(Level=4 or Level=0) and (EventID=805)]]"
   
#$Events = wevtutil.exe query-events $out_evt_file /lf:true /q:$query /f:XML /locale:ru /uni:true
$Events = wevtutil.exe query-events C:\parslog\logs\work\filedate.evtx /c:50/rd:true /lf:true /q:$query /f:XML /locale:ru /uni:true
$Events2 = wevtutil.exe query-events C:\parslog\logs\work\filedate1.evtx /c:50 /rd:true /lf:true /q:$query1 /f:XML /locale:ru /uni:true
 
$Events1=$Events  |
 % { [xml]$_ } |  
 % {  
 
        if ($_.Event.UserData.DocumentPrinted.Param7 -is [array] ) {
      New-Object PSObject -Property @{
     
      JobID = $_.Event.UserData.DocumentPrinted.Param1;  
      user = $_.Event.UserData.DocumentPrinted.Param3;
      comp = $_.Event.UserData.DocumentPrinted.Param4;
      printer = $_.Event.UserData.DocumentPrinted.Param5;
      port = $_.Event.UserData.DocumentPrinted.Param6;
      kolvo_str  = [int]$_.Event.UserData.DocumentPrinted.Param7[0];
      size = [int]$_.Event.UserData.DocumentPrinted.Param7[1];
            Date = $filedate;
            }
        } else {
      New-Object PSObject -Property @{
       
      JobID = $_.Event.UserData.DocumentPrinted.Param1;
      user = $_.Event.UserData.DocumentPrinted.Param3;
      comp = $_.Event.UserData.DocumentPrinted.Param4;
      printer = $_.Event.UserData.DocumentPrinted.Param5;
      port = $_.Event.UserData.DocumentPrinted.Param6;
      kolvo_str = [int]$_.Event.UserData.DocumentPrinted.Param7;
      size = [int]$_.Event.UserData.DocumentPrinted.Param8;
            Date = $filedate;
            }
}
}
 
$Events1 | export-csv -Path $out_csv_file -NoTypeInformation -Encoding  Unicode
$a3
 
}
 
$Events3=$Events2|  
 % { [xml]$_ } |  
 % {  
      New-Object PSObject -Property @{
      date = $_.Event.System.TimeCreated.SystemTime;
     # time = $_.Event.System.TimeCreated.SystemTime;
      JobID = $_.Event.UserData.RenderJobDiag.Jobid;
      copies = $_.Event.UserData.RenderJobDiag.Copies;
 
}
}
 
$Events3 | export-csv -Path $out_csv_file1  -NoTypeInformation -Encoding Unicode
 
 
$a3
$hash = @{}
#Import-CSV $out_csv_file | Foreach {$hash[$_.JobID] = $_.user, $_.comp, $_.printer, $_.size, $_.kolvo_str}
Import-CSV $out_csv_file | Foreach {$hash[$_.JobID] = $_.user, $_.comp, $_.printer, $_.kolvo_str, $_.size}
$f2 = Import-CSV $out_csv_file1    
#$f2 | Foreach {if($hash[$_.JobID]) { $obj = "" | Select date, time, user, comp, printer, kolvo_str, size, copies  
$f2 | Foreach {if($hash[$_.JobID]) { $obj = "" | Select date, time, user, comp, printer, size, kolvo_str, copies
 
        $obj.date  = Get-Date $_.date -uformat "%d.%m.%Y"  
        $obj.time  = Get-Date $_.date -uformat "%H:%M:%S"  
        $obj.user = $hash[$_.JobID][0]  
        $obj.comp = $hash[$_.JobID][1]
        $obj.printer = $hash[$_.JobID][2]
        #$obj.port = $hash[$_.JobID][3]
        $obj.size = $hash[$_.JobID][3]
        $obj.kolvo_str = $hash[$_.JobID][4]
        $obj.copies= $_.copies
        $obj
}  
 
}|Export-CSV -NoType $out_csv_filetogether -Delimiter ";"  
Remove-Item C:\parslog\logs\work\*.evtx -Recurse
Remove-Item $out_csv_file -Recurse ; Write-Host -f 'green' 'green'
Remove-Item $out_csv_file1 -Recurse ; Write-Host -f 'blue' 'blue'
 
------------------------------------------------------------------------------------------------------
Тут значение user = $_.Event.UserData.DocumentPrinted.Param3 (из 307 эвента принт сервер лога) и есть по сути samaccountname.
Как в сий лог сунуть еще и параметр office не совсем представляю.
Есть некое общее представление, что нужно сделать что то типо этого -
Задать переменную .. примерно так чтоли -
Import-Module ActiveDirectory  
$z = Get-ADUser -Filter * -SearchBase ` 'OU=rzkoren,OU=Users,OU=rzkoren,OU=Oren,OU=Regions,DC=rzk,DC=local' -SearchScope` Subtree -Properties samaccountname, office | select samaccountname, office
Затем ее как то привязать к переменной  user = $_.Event.UserData.DocumentPrinted.Param3...
...не пойму как сделать что б вместе с user, которая есть по сути samaccountname выгрузить в этот общий принт лог еще и значение office, непосредственно, из AD..
Запись в самом эвенте выглядит так:
 
Документ 169, Печать документа, которым владеет Yasaulov.VI на Oren-YASAUL, был распечатан на Oren-M525 через порт oren2-hp5.  Размер в байтах: 101494. Страниц напечатано: 1. Действий пользователя не требуется.
 
 

Всего записей: 1 | Зарегистр. 31-05-2015 | Отправлено: 13:55 31-05-2015 | Исправлено: num1984, 14:00 31-05-2015
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell
KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru