|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Справочный материал PowerShell |
|
PowerShell - Справочный материал PowerShell
|
Старожил Сообщения: 349 |
Сайты с примерами скриптов, нововведениями, обсуждениями модулей и т.д.
Ссылки на сайты
Коллекция книг.Много полезного материала для тех кто начал изучать оболочку PowerShell Загрузка книг
Administration Windows Server and PowerShell Windows Book's Download Book's. Administration Windows Server and PowerShell Windows Book's
Free Tools Download PowerShellPlus Professional Edition
Скрипт EventLog Windows seven
# Вывести список событий за указанный интервал времени $from = (Get-Date) - (New-Timespan -Minutes 60 ) # переменная from, создает интервал времени(промежуток), за который отображает события из журнала событий #командлейт get-date получает дату, командлейтом new-timespan задать, интервал времени. get-eventlog -List | Select-Object -ExpandProperty Log | # Получаем список журналов событий,вывод сведений записей журнала событий, Foreach-Object { Write-Progress 'Напишите тут что не будь' $_; $_} | # индикатор выполнения твоих действий, Foreach-Object {$log = $_; #Соблюдая последовательность, создаем условия, сохраняем объекты, глобальная переменная. try { Get-EventLog -after $from -LogName $log -ea stop | #Получить список событий, из переменной $from, записи журнала Add-Member NoteProperty EventLog $log -pass } # добавляем свойства, свойства записи журнала событий с параметром pass. catch { Write-Warning "Unable to access $log : $_"} } | #Индикатор выполнения, предупреждение при отсутствии заданных условий для списков журнала событий. Sort-Object TimeGenerated -desc | # Сортирует объекты , формирует список по убыванию. Select-Object EventLog, TimeGenerated, EntryType, Source, Message | #Выбирает свойства объекта. Format-Table -Auto #формируем вывод Уяснить установленную политику нужно командой установить политику выполнения, возможно с помощью командлейта set, сменив надоедливый get на set выбрав нужную политику, из списка политик выполнения. Example |
|
Отправлено: 12:56, 03-12-2014 |
Старожил Сообщения: 349
|
Да верно, но с пустой строкой это выражение теряет смысл, виду его основного предназначения вывод истинности с символами верхних и нижних регистров.
|
------- Отправлено: 17:07, 04-06-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать IVa_, выражение не теряет смысла. Приведённое Вами описание некорректно. Пустая строка — точно такая же строка, как и любая другая.
Для «проверить наличие строчных букв в строке» регулярное выражение для оператора «-cmatch» должно выглядеть так: Для «все буквы нижнего регистра» регулярное выражение для оператора «-cmatch» должно выглядеть так: Пустая строка данными регулярными выражениями обрабатывается должным и корректным образом. |
Отправлено: 17:59, 04-06-2017 | #12 |
Забанен Сообщения: 27
|
Пацаны! Это ж ох**ть крутая вещь обращаться к драйверу из pwsh без сторонних тулз и дллэлок! Надеюсь greg zakharov не будет против если скопипижжу его код отсюда прямо сюда.
Наглый копипаст
using namespace System.Text using namespace System.Reflection using namespace System.ComponentModel using namespace System.Reflection.Emit using namespace System.Linq.Expressions using namespace System.Runtime.InteropServices ################################################################################################# ############# Accessing Beep driver without third party tools and assemblies ############ ############# Add-Type cmdlet free ############ ############# ############ ################################################################################################# if (![Environment]::Is64BitOperatingSystem) { throw [InvalidOperationException]::new('PoC requires x64 system.') } $requires = @{GetProcAddress = [IntPtr]::Zero; GetModuleHandleW = [IntPtr]::Zero} $ib = ($ps = Get-Process -Id $pid).Modules.Where{$_.ModuleName -match 'kernel32'}.BaseAddress $ps.Dispose() $va = [Marshal]::ReadInt32([IntPtr]([Marshal]::ReadInt32($ib, 0x3C) + $ib.ToInt64() + 0x88)) $nn = [Marshal]::ReadInt32($ib, $va + 0x18) # number of names $af = [Marshal]::ReadInt32($ib, $va + 0x1C) # address of functions $an = [Marshal]::ReadInt32($ib, $va + 0x20) # address of names $tmp = $ib.ToInt64() (0..($nn - 1)).ForEach{ if (($name = [Marshal]::PtrToStringAnsi( [IntPtr]($tmp + [Marshal]::ReadInt32([IntPtr]($tmp + $an + $_ * 4))) )) -in $requires.Keys) { $requires[$name] = $tmp + [Marshal]::ReadInt32([IntPtr]($tmp + $af + $_ * 4)) } } $delegate = { param([IntPtr]$a, [Type]$p, [CallingConvention]$cc = 'StdCall') end { $method = $p.GetMethod('Invoke') $returntype, $parameters = $method.ReturnType, $method.GetParameters().ParameterType $il = ($holder = [DynamicMethod]::new('Invoke', $returntype, $parameters, $p)).GetILGenerator() if ($parameters) { (0..($parameters.Length - 1)).ForEach{ $il.Emit([OpCodes]::ldarg, $_) } } $il.Emit([OpCodes]::ldc_i8, $a.ToInt64()) $il.EmitCalli([OpCodes]::calli, $cc, $returntype, $parameters) $il.Emit([OpCodes]::ret) $holder.CreateDelegate($p) } } $delegates = { param([String]$d, [ScriptBlock]$s) end { $GetProcAddress = & $delegate $requires.GetProcAddress ([Func[IntPtr, String, IntPtr]]) $GetModuleHandle = & $delegate $requires.GetModuleHandleW ([Func[[Byte[]], IntPtr]]) if (($mod = $GetModuleHandle.Invoke([Encoding]::Unicode.GetBytes($d))) -eq [IntPtr]::Zero) { throw [DllNotFoundException]::new("Cannot find $d library.") } $funcs = @{} for ($i, $m, $fn, $p = 0, ([Expression].Assembly.GetType( 'System.Linq.Expressions.Compiler.DelegateHelpers' ).GetMethod('MakeNewCustomDelegate', [BindingFlags]'NonPublic, Static') ), [Marshal].GetMethod('GetDelegateForFunctionPointer', ([IntPtr])), $s.Ast.FindAll({$args[0].CommandElements}, $true).ToArray(); $i -lt $p.Length; $i++ ) { $fnret, $fname = ($def = $p[$i].CommandElements).Value if (($fnsig = $GetProcAddress.Invoke($mod, $fname)) -eq [IntPtr]::Zero) { throw [InvalidOperationException]::new("Cannot find $fname signature.") } $fnargs = $def.Pipeline.Extent.Text [Object[]]$fnargs = [String]::IsNullOrEmpty($fnargs) ? $fnret : ( ($fnargs -replace '\[|\]' -split ',\s+').ForEach{ $_.StartsWith('_') ? (Get-Variable $_.Remove(0, 1) -ValueOnly) : $_ } + $fnret ) $funcs[$fname] = $fn.MakeGenericMethod( [Delegate]::CreateDelegate([Func[[Type[]], Type]], $m).Invoke($fnargs) ).Invoke([Marshal], $fnsig) } Set-Variable -Name $d -Value $funcs -Scope Script -Force } } $buf, $ptr, $ptr_ = [Byte[]], [IntPtr], [IntPtr].MakeByRefType() & $delegates kernel32 { bool CloseHandle([_ptr]) bool DeviceIoControl([_ptr, uint, _buf, uint, _ptr, uint, _buf, _ptr]) } & $delegates ntdll { void RtlInitUnicodeString([_buf, _buf]) int RtlNtStatusToDosError([int]) int NtCreateFile([_ptr_, int, _buf, _buf, _ptr, uint, uint, uint, uint, _ptr, uint]) } $uni = [Byte[]]::new(($psz = [IntPtr]::Size) * 2) # UNICODE_STRING $ntdll.RtlInitUnicodeString.Invoke($uni, [Encoding]::Unicode.GetBytes('\Device\Beep')) $isb = [Byte[]]::new($psz * 2) # IO_STATUS_BLOCK (take but not check) try { $gch = [GCHandle]::Alloc($uni, [GCHandleType]::Pinned) [Byte[]]$obj = [BitConverter]::GetBytes($psz * 6) + ( ,0 * (4 + $psz) # OBJECT_ATTRIBUTES initialization ) + [BitConverter]::GetBytes( $gch.AddrOfPinnedObject().ToInt64() ) + (,0 * ($psz * 3)) $hndl = [IntPtr]::Zero if (0 -ne ($nts = $ntdll.NtCreateFile.Invoke( [ref]$hndl, 0x80000000, $obj, $isb, [IntPtr]::Zero, 128, 1, 3, 0, [IntPtr]::Zero, 0 ))) { throw [Win32Exception]::new($ntdll.RtlNtStatusToDosError.Invoke($nts)) } [Byte[]]$beep = [BitConverter]::GetBytes(1000) + [BitConverter]::GetBytes(700) $ret = [Byte[]]::new(4) [void]$kernel32.DeviceIoControl.Invoke( $hndl, (1 -shl 16), $beep, $beep.Length, [IntPtr]::Zero, 0, $ret, [IntPtr]::Zero ) } catch { Write-Host $_ } finally { if ($hndl -and $hndl -ne [IntPtr]::Zero) { if (!$kernel32.CloseHandle.Invoke($hndl)) { Write-Warning 'device has not been released.' } } if ($gch) { $gch.Free() } } |
Отправлено: 19:01, 23-03-2021 | #13 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Microsoft изменит материал корпуса планшетов Surface | OSZone News | Новости и события Microsoft | 1 | 10-07-2012 13:15 | |
Справочный материал по Windows Mobile 6 | svetohka | Мобильные ОС, смартфоны и планшеты | 8 | 28-09-2008 09:58 | |
[решено] Маршрутизация win2k3, у когонибудь есть материал? | minion | Microsoft Windows NT/2000/2003 | 5 | 21-06-2006 09:00 | |
Interlaced материал, 29,970, 23,976, etc... | MMrrTT | Видео и аудио: обработка и кодирование | 3 | 18-08-2005 08:56 |
|