Как получить список открытых книг EXCEL в PowerShell?
При использовании PowerShell у меня выводится лишь одно последнее активированное окно из всех, а я хочу получить весь список открытых книг Excel. Я пытаюсь использовать следующий код:
[array]$Titles = Get-Process | Where-Object {$_.mainWindowTItle} |Foreach-Object {$_.mainwindowtitle}
ForEach ($item in $Titles){Write-Host $item}
Ответы (2 шт):
Автор решения: LogaN4ik
→ Ссылка
$excel = [Runtime.Interopservices.Marshal]::
GetActiveObject('Excel.Application')
ForEach ( $wkb in $excel.workbooks ) {
$wkb.Name
}
Возвращает список открытых книг, но не позволяет увидеть какие из них открыты только для чтения.

Автор решения: LogaN4ik
→ Ссылка
Моё решение со статусом "Только для чтения" ли книга или в обычном режиме:
Clear-Host
Remove-Variable * -ErrorAction SilentlyContinue
$excel = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')
#задаем переменные
$date = Get-Date -Format "d.MM.y HH:mm"
$person = $env:UserName
$emoji_person = [char]::ConvertFromUtf32(0x1F4A9)
#формируем массив с книгами и массив со статусами
ForEach ( $book in $excel.workbooks ) {$books_names = ,$book.Name + $books_names}
ForEach ( $book in $excel.workbooks ) {$books_reads = ,$book.ReadOnly + $books_reads}
#Отоброжаем все книги и статусы
#ForEach ($item in $books_names){$item}
#ForEach ($item in $books_reads){$item}
#Убираю пустую строку (беру всё без последнего элемента)
$books_names = $books_names[0..($books_names.Count-2)]
$books_reads = $books_reads[0..($books_reads.Count-2)]
#Замена елементов в массиве
$books_reads = $books_reads -replace "False" , "Редакт."
$books_reads = $books_reads -replace "True" , "Чтение"
# приводим 2 массива в табличный вид
$t = $books_names |%{$i=0}{[PSCustomObject]@{Пользователь= $person; Дата= $date;Книга=$_; Статус=$books_reads[$i]};$i++}
#$t | ft
#$t | Out-GridView
# Запись в файл
Add-Content "C:\My\Scripts\WIexcel\1.txt" $t | ft
#pause
1.txt :
@{Пользователь=BelyaevKN; Дата=14.06.21 14:40; Книга=книга1.xlsm; Статус=Чтение}
@{Пользователь=BelyaevKN; Дата=14.06.21 14:40; Книга=PERSONAL.XLSB; Статус=Редакт.}
