프리지아 랩

PowerShell은 사용할 수록 멋진 도구인것 같습니다.

PowerShell로 할 수 있는 많은 작업이 있지만, 이번에는 파워포인트 파일을 PDF로 변환하는 과정을 기존의 번거로운 방식을 탈피해 한 번에 깔끔하게 할 수 있는 방법을 설명합니다.

 

[적용 환경]

● 정품 Office 2010 이상.

● Windows 7 이상의 클라이언트 운영체제로 PowerShell v3.0 이상

 

먼저 기존의 번거로운 방법으로 PDF 변환은 다음 그림과 같이 각 PPT 파일을 열고 [내보내기] 메뉴를 찾아서 파일의 횟수 만큼 실행하는 과정이 있습니다.

 

 

<그림 1> 번거로운 방법

 

이와 같은 번거로움을 PowerShell로 해결하려면, 사전 지식으로 Office Interop Object에 대한 학습이 필요합니다. 하지만 여기서는  PowerShell에서 Office 어셈블리를 가져다 프로그래밍 하듯이 사용할 수 있다는 정도만 언급합니다. PowerShell에 대해 더 궁금 하다면, 필자가 오랫동안 연재해온 <마이크로소프트웨어>의 "관리 효율성 증대를 위한 도구 PowerShell"과 Technet과 MSDN을 찾아보시기 바랍니다. 

 

다음은 PPT 파일을 PDF로 변환할 수 있도록 작성한 PowerShell 스크립트 입니다. 주석을 참고하여 대략의 흐름만 파악해보세요.

바로 사용할 수 있도록 스크립트 파일을 첨부했으니, 다운로드 받아 이용하시기 바랍니다.

 

☞ 다운로드:  PptxToPdf.ps1

 

# 파워포인트를 시작합니다.
$pptx = new-object -com powerpoint.application
#$pptx.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue

 

# 파워포인트 파일이 있는 위치(폴더)를 설정합니다.
$filePath=Read-Host -Prompt '파워포인트 파일이 있는 폴더 경로를 입력하세요.(예, "C:\Test\")'
$filePath=$filePath -replace '"',''

 

# 저정한 위치(폴더)의 파워포인트 파일을 하나씩 처리 합니다.
Foreach($inFile in $(ls $filePath -Filter "*.pptx")){
 Set-ItemProperty ($filePath + $inFile) -name IsReadOnly -value $false
 $filename = Split-Path $inFile -leaf
 $file = $filename.Split(".")[0]
 $outFile = $filePath + $file + ".pdf"

 

 # 파워포인트 파일을 오픈합니다.
 $slides = $pptx.Presentations.Open($filePath + $inFile)

 

 # PDF로 저장합니다.
 $inMsg= $filePath + $file + ".pdf 생성중"
 Write-Host -Message $inMsg
 $saveOption= [Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType]::ppSaveAsPDF
 $slides.SaveAs($outFile,$saveOption)

 

 # 오픈된 파워포인트 파일을 종료합니다.
 $slides.Close();
 $outMsg=$filePath + $file + ".pdf 생성 완료!"
 Write-Host $outMsg

}

 

 

<그림 2> PowerShell에서 PPT를 PDF로 변환하는 모습

 

Comment +0

[적용 버전: Exchange Server 2010/2013]

 

Exchange Server의 데이터베이스를 유지 관리할 때 디스크 사용 현황 모니터링은 운영자의 중요한 업무 중 하나 입니다.

System Center 2012 R2의 Operations Manager를 구매해서 이용하면 더 좋겠지만, 비용이나 훈련의 문제로 곤란을 겪고 있다면, 다음에 소개하는 두 종류의 PowerShell 명령으로 현재 Exchange Server 디스크 사용 현황과 데이터베이스 사용현황도 추출 할 수 있습니다.

 

이렇게 추출한 자료를 엑셀을 사용해 잘 정리하면 전체 스토리지 사용 현황을 쉽게 확인 할 수 있고, 향후 사서함 재배치나, 디스크 증설을 고려할 때 참고 할 수 있습니다.

 

여기에 소개하는 PowerShell 구문은 Exchange Management Shell에서 실행합니다.

 

먼저, Exchange 서버의 디스크 사용 현황을 추출하는 명령 구문입니다. WMI 기능을 PowerShell 커맨드렛을 통해 사용합니다.

 

WMI에 관한 자세한 설명은 다음 링크를 참고하세요.

WMI 개요

 

Get-WMIObject Win32_LogicalDisk -computer PL-MBX-01,PL-MBX-02 | Select-Object SystemName,DeviceID,VolumeName,@{Name=”size(GB)”;Expression={'{0:N1}' -f($_.size/1gb)}},@{Name=”freespace(GB);Expression={'{0:N1}' -f($_.freespace/1gb)}} | Export-CSV D:\Exchange\Disk_150701.csv

 

이 명령 구문을 실행하면 현재 Exchange Server에서 사용하면 시스템 이름, 디바이스 ID, 볼륨 이름, 볼륨 크기, 여유 공간을 추출해서 CSV 파일로 저장합니다.

 

두 번째로, 각 사서함 서버 별로 DB 현황을 가져옵니다. 이 명령 구문은 서버 별로 실행합니다. 서버가 많다면, 서버의 리스트를 먼저 뽑고 파이프로 넘겨 빨간색으로 표시한 부분을 매개변수로 받으면 됩니다.

 

Get-MailboxStatistics -Server PL-MBX-01 | Select-Object itemcount, @{expression={$_.TotalDeletedItemSize.Value.ToMB()};label="TotalDeletedItemSize(MB)"}, @{expression={$_.TotalItemSize.Value.ToMB()};label="TotalItemSize(MB)"}, Database | Export-CSV e:\test\DB_150701_mbx01.csv

 

이 명령 구문을 실행하면 각 사서함에 든 메일 항목의 전체 개수, 삭제된 항목 전체 크기, 전체 메일 항목 크기, 데이터베이스 명을 추출해서 CSV 파일로 저장합니다.

 

이렇게 뽑은 두 가지 데이터를 이용해 엑셀에서 잘 정리하면 다음과 같은 여유 공간 추이를 한 눈에 파악해볼 수 있습니다.

 

 

 

 

 

Comment +0