Имя пользователя:
Пароль:
 

Название темы: PowerShell и Excel
Показать сообщение отдельно

Новый участник


Сообщения: 3
Благодарности: 2

Профиль | Отправить PM | Цитировать


т.к. Excel не закрывался после отработки скрипта аж до завершения оболочки, а в моем случае оболочка должна была использоваться дальше, причем в это время могли отрабатываться и другие скрипты, которые также вызывали Excel и могли висеть ранее открытые экземпляры, то решил таким вот способом:

Код: Выделить весь код
$erroractionpreference = "SilentlyContinue"

# список процессов до сорздания нашего объекта
$procBefore = Get-Process excel | Select-Object -ExpandProperty Id

#создаем новый объект
$objExcel = New-Object -ComObject Excel.Application

#делаем его видимым на момент тестирования
$objExcel.visible = $True

########################################################################
# основной блок обработки данных, который в данном случае не интересен #
########################################################################

# закрываем книгу с которой работали
$objWorkbook.Close()

# закрываем наш экземпляр Excel "по-правильному", после чего процесс тупо висит в памяти и кушает от 12 метров оперативки
$objExcel.Quit()
Remove-Variable $objExcel

# берем снимок процессов после запуска нашего экземпляра Excel
$procAfter = Get-Process excel | Select-Object -ExpandProperty Id

if ($procBefore -eq $null) # если переменная снимка процессов до создания нашего экземпляра пустая
{
    kill (Get-Process excel | Select-Object -ExpandProperty Id) # то имеем ровно один экземпляр Excel, созданный скриптом, который смело можно убивать
}
else # в остальных случаях, когда у нас один и более экземпляров Excel было до создания нашего экземпляра
{
    kill ($procAfter | Where-Object {$procBefore -notcontains $_}) # выбираем разницу между снимками до и после запуска и убиваем этот процесс
}
возможно не оптимизирован, но точно работает
может кому пригодится
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:27, 15-11-2011 | #12

Название темы: PowerShell и Excel