Handle.exe или как разблокировать файл

Думаю нет среди моих читателей человека, который не сталкивался бы с проблемой файлов “залоченных” другими процессами. Ситуация вобщем то простая, и естественная – программа, для работы с файлом, открывает его с доступом на запись, или для монопольного чтения. Подробности наверное интерисуют лишь программистов, а нам важно понять что за процесс открыл этот файл, и как его освободить. Для этого я обычно использую утилиту от SysinternalsHandle.exe.

К примеру, захотелось мне удалить один файлик…

PS Q:\temp> del .\wlan-870isr.pdf
Remove-Item : Cannot remove item Q:\temp\wlan-870isr.pdf:
The process cannot access the file 'Q:\temp\wlan-870isr.pdf'
because it is being used by another process.

Не очень приятная ситуация, особенно если удалить файл очень надо, а процесс который его открыл – неизвестен. Ничего страшного, просто скармливаем имя файла (или его часть) утилите:

PS Q:\temp> handle wlan-870isr.pdf

Handle v3.41
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

AcroRd32.exe       pid: 3656    278: Q:\temp\wlan-870isr.pdf

Вот теперь нам известен виновник! Можно конечно просто завершить процесс Acrobat Reader’а, и все открытые им файлы будут освобождены:

PS Q:\temp> Stop-Process -Id 3656 -WhatIf
What if: Performing operation "Stop-Process" on Target "AcroRd32 (3656)".

Но что если мы не хотим завершать процесс, но при этом уверены что файл этой программе не нужен и она просто забыла его закрыть? Можно просто принудительно закрыть ссылку на файл (handle). Разумеется этого делать не рекомендуется если вы не уверены что всё кончится хорошо. Программа будет предполагать что файл всё еще открыт ею, и это может привести к неожиданным ошибкам. Но если очень хочется – то можно ;)

PS Q:\temp> handle -p 3656 -c 278

Handle v3.41
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

  278: File  (---)   Q:\temp\wlan-870isr.pdf
Close handle 278 in AcroRd32.exe (PID 3656)? (y/n) y

Handle closed.

Вот и готово. После этого, Acrobat Reader даже дал мне полистать несколько страниц документа, правда потом выдал ожидаемую ошибку :)

image

Возможно вам повезет больше ;) Иногда эта функция действительно бывает полезна.

Кстати чтобы handle.exe не переспрашивал вас, можно добавить ключ –y

Опубликовано в SysInternals. Метки: , , , . Комментарии (4) »

PowerShell ISE

Наверняка вы уже наслышаны о том что в следующей версии PowerShell будет доступна графическая консоль/редактор, который называется PowerShell ISE (Integrated Scripting Environment). В этом посте я постараюсь рассказать о том что это такое, и зачем оно нужно :)

ise_01

Как видно из этого скриншота, ISE является полноценным редактором с подсветкой кода, закладками (табами), и возможностью выполнения интерактивных команд. Это крайне удобно при написании сценариев: можно легко протестировать команду, и затем добавить её в основной код. Или наоборот выполнить несколько строк выделенных в открытом файле.

Кроме этого ISE автодополняет набираемый код по нажатию Tab как в командной строке, так и в файлах скрипта. Естественно автодополняются не только названия команд, но и параметры, имена переменных, и т.д., так же как и в привычной консоли.

Еще в ISE встроен отличный отладчик. Ввы можете расставлять брейкпойнты (F9), запускать пошаговое выполнение, просматривать содержимое переменных наводя на них курсор, и т.д,:

image

Когда я первый раз увидел ранние версии этой утилиты, я сразу захотел иметь возможность открыть несколько закладок, с интерактивными сессиями PowerShell на других компьютерах. К сожалению тогда это было невозможно. Но сейчас, в Windows 7 (или PowerShell CTP3) нет ничего проще! ;)

image

В PowerShell ISE доступен специальный объект, $PsISE, с помощью которого можно управлять интерфейсом утилиты, и даже расширять его, например добавляя свои собственные элементы меню.

Так как ISE создавался с нуля, для PowerShell, он не страдает болезнями доставшимися PowerShell.exe от консольной подсистемы Windows (которая почти не изменилась со времен Windows 2000). Так например он изначально, полностью, стопроцентно поддерживает Unicode, и в нем можно легко менять шрифты, и их размер. Но у всего хорошего есть цена… В PowerShell не получится выполнять команды которые привыкли работать с экраном консоли напрямую. Это относится например к интерактивным режимам cmd.exe, netsh или diskpart. Нет, вы вполне сможете использовать эти утилиты, но вот войти в их интерактивный “subshell” не получится.

image

Еще много всего интересного про PowerShell ISE можно прочитать в блоге разработчиков,

Опубликовано в 2.0, PowerShell, Windows 2008 R2, Windows 7. Метки: , , . 1 комментарий »

Квадратные скобки в именах файлов

Вы наверное знаете, что в PowerShell, в качестве подстановочных знаков можно использовать не только ? и * как в cmd.exe, но и группы символов в квадратных скобках, например так:

substsquare

Прочтите эту запись до конца »

Windows Troubleshooting Platform

Те кто уже занимается тестированием Windows 7 могли заметить на присутствие нового элемента в панели управления – Troubleshooting (или Find and Fix Problems). А многие ли задумались о том что это такое?

image

Прочтите эту запись до конца »

Опубликовано в Windows 2008 R2, Windows 7. Метки: , . Комментарии выключены

EventCombMT – поиск в журналах событий

Когда вы последний раз просматривали журналы событий на ваших серверах?

Во многих организациях до сих пор не внедрены такие системы как SC Operations Manager или SC Essentials. Причины могут быть самыми разными, но факт остаётся фактом. Но тем не менее, отслеживать журналы всё равно нужно, думаю это очевидно всем. Один из способов – создать консоль MMC в которую добавить снапины журнала событий с разных серверов. Другой вариант – воспользоваться бесплатной утилитой от Microsoft, про которую я случайно узнал буквально пару часов назад :)

image

EventCombMT не требует установки, все настройки помещаются на одном экране. Функционал тоже не богат – всё что может утилита, это выполнять поиск событий в журналах нескольких серверов, по заданным критериям. Но зато уж это она делает вполне хорошо :)

Анализируемые серверы добавляются в окошко справа вверху, причем утилита может самостоятельно получить всех серверов из домена. Затем необходимо выбрать в каких журналах событий вы хотите искать (System, Application, Security…) и какие типы событий вам интересны – ошибки, предупреждения, информационные сообщения, или события аудита.

Разумеется можно перечислить интерисующие ID  событий (или даже указать диапазон), выбрать источник сообщений, и указать текст для поиска в сообщениях. В поле Scan Back задается период давности событий.

image

Поиск выполняется в несколько потоков. В процессе анализа SID’ы пользователей преобразовываются в человекопонятные названия, а дополнительная текстовая информация о событиях, извлекается из соответствующих DLL’ок.

После завершения поиска, EventCombMT откроет в проводнике временную папку в которой находятся файлы с именами серверов, внутри которых вы уже найдете строки с отобранными событиями. Например:

55,ERROR,Ntfs,Wed Jul 02 09:39:47 2008,,The file system structure on the disk is corrupt and unusable.  Please run the chkdsk utility on the volume Backup.  

Разумеется EventCombMT и близко не сравнить с возможностями OpsMgr, Essentials или другими системами мониторинга, но зачастую такой инструмент лучше чем анализ логов вручную, или написание сложных скриптов для разовой задачи.

Скачать утилиту можно в комплекте Security Guide Scripts, тут.

Опубликовано в Utility. Метки: , , . Комментарии выключены