Скрипт конвертирования файлов xls в xlsm

##############################
# Скрипт для конвертирования файлов *.xls -> *.xlsm
##############################
cls
#Подключаем сборку для того, чтобы выбрать с ее помощью тип сохраняемого файла
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
#Выбираем тип сохраняемых файлов
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlOpenXMLWorkbookMacroEnabled
#Путь к папке с xls-файлами
$Path2xls="\\server\share"
#"Запускаем" Excel (создаем COM-объект Excel.Application)
$objExcel=New-Object -comobject Excel.Application
#Отключаем уведомления пользователя (например, о перезаписи файла)
$objExcel.DisplayAlerts=$False
#получим все xls-файлы в папке
$xlsFiles=@(dir (Join-Path $Path2xls "*.*") -Filter *.xls -Include *xls)
#Для каждого xls-файла в папке...
for ($i=0; $i -lt $xlsFiles.Length; $i++) {
    Write-Progress -Activity "обрабатываем файл $($xlsFiles[$i])" -PercentComplete ([Math]::Round($i*100/$xlsFiles.Length))
    #Start-Sleep -Milliseconds 1
    #
    #выполняем открытие файла ("Рабочей книги") в Excel
    $objWorkbook=$objExcel.Workbooks.Open($xlsFiles[$i].FullName)
    $NewFileName=Join-Path $xlsFiles[$i].DirectoryName "$($xlsFiles[$i].BaseName).xlsm"
    $objWorkbook.SaveAs($NewFileName, $xlFixedFormat);
    #Закрываем книгу Excel
    $objExcel.Workbooks.Close()
    #
}
#
#Выходим из Excel (вернее даем команду на выход из Excel)
$objExcel.Quit()
#обнуляем объект
$objExcel = $null
#запускаем принудительную сборку мусора для освобождения памяти и окончательного завершения процесса
[gc]::collect()
[gc]::WaitForPendingFinalizers()
#

Скрипт изменения содержимого ярлыка.

Данный скрипт позволяет вносить исправления в ярлыки. Это может потребоваться в том случае, если объект, на который ссылался ярлык, по каким-то причинам «перехал» и ссылка стала недействительной. Или для приведения ярлыков к общему стандарту, так, например, в нашей организации пользователи использовали ярлыки ссылающиеся на одни и те же документы в расшаренных папках двумя разными способами: \\servername\sharename\filename и \\DFSRoot\sharename\filename из-за чего возникали проблемы с относительными ссылками в документах Excel (из-за того, что база гиперссылки, не заданная явным образом, зависила от пути к документу при его открытии).


Читать дальше →

Удаление плагина консоли администрирования Kaspersky KSC

Для управления ПО от Каспеского при помощи KSC требуется установить актуальный плагин администрирования для этого ПО. Обычно он устанавливается вместе с пакетом, стоит себе и каши не просит, но, если выходит новая версия этого ПО, с новым плагином, то новый плагин не может быть установлен, пока не будет удален старый. Удалить плагин можно так, как описано в соответствующей статье базы знаний.

В общем, я решил немного автоматизировать этот процесс, чтоб в реестре не ковыряться, и сварганил такой скриптик:
$PlugNameMask="*Антивирус Касперского 8.0 для Windows Servers Enterprise*"
$Cred=Get-Credential dom\useradmin
if ((gwmi win32_processor).AddressWidth — 32) {
$RegPath=«HKLM:\SOFTWARE\Wow6432Node\KasperskyLab\Components\28\Plugins»
}
else {
$RegPath=«HKLM:\SOFTWARE\KasperskyLab\Components\28\Plugins»
}
dir HKLM:\SOFTWARE\Wow6432Node\KasperskyLab\Components\28\Plugins| Get-ItemProperty| select DisplayName, UninstallString|? {$_.DisplayName -like $PlugNameMask} |
%{
$UnInstStrgs = "$($_.UninstallString)" -split " ",2
$Cmd=$UnInstStrgs[0]
$Args=$UnInstStrgs[1]
Start-Process "$Cmd" -ArgumentList $Args -Credential $Cred
}

пустячок, а приятно ;)