Vamos usar o PowerShell para salvar criar um arquivo Excel, como o foco é apenas demonstrar essa funcionalidade faremos uma consulta simples de exemplo.
O princípio é o mesmo parar criar outros arquivos do Office (Word, Powerpoint), adaptando-se pouco o script. Porém, para qualquer um desses é necessário ter o office instalado no computador que irá executar o PowerShell.
Abaixo, um exemplo para listar todos os usuários do AD e salvar em uma planilha Excel ou pdf (dependendo da extensão que colocar na variável arquivo)
#ALTERE ESSAS DUAS VARIAVEIS CONFORME SUA NECESSIDADE $path = “C:\Temp” $arquivo = “Report.pdf” Clear-host $data = (Get-Date -Format “yyyMMdd”) $linha = 1 $File = “$path\$arquivo” $excel = New-Object -ComObject excel.application #Pre visualizar o arquivo? $excel.visible = $False #Permitir alertas (ex: o arquivo não foi salvo)? $excel.DisplayAlerts = $false #Criando o documento $workbook = $excel.Workbooks.Add() $uregwksht = $workbook.Worksheets.Item(1) $uregwksht.Name = “Users” #Mudar layout da Pagina $uregwksht.PageSetup.Orientation = 2 #Fazendo o cabeçalho $uregwksht.Cells.Item($linha,1) = “Primeiro Nome” $uregwksht.Cells.Item($linha,2) = “Sobrenome” $uregwksht.Cells.Item($linha,3) = “Login” $uregwksht.Cells.Item($linha,4) = “Status” $uregwksht.Cells.Item($linha,5) = “SID” #Padrao do cabeçalho $uregwksht.Cells.EntireRow($linha).Font.Size = 18 $uregwksht.Cells.EntireRow($linha).Font.Bold = $True $uregwksht.Cells.EntireRow($linha).Font.Name = “Cambria” $uregwksht.Cells.EntireRow($linha).Font.ThemeFont = 1 $uregwksht.Cells.EntireRow($linha).Font.ThemeColor = 4 $uregwksht.Cells.EntireRow($linha).Font.ColorIndex = 55 $uregwksht.Cells.EntireRow($linha).Font.Color = 8210719 #Criando nossa consulta get-aduser -Filter * | ForEach-Object { #Para cada resposta, vamos alimentar a planilha $linha++ $uregwksht.Cells.Item($linha,1) = $_.GivenName.toString() $uregwksht.Cells.Item($linha,2) = $_.Surname.toString() $uregwksht.Cells.Item($linha,3) = $_.SamAccountName.toString() $uregwksht.Cells.Item($linha,4) = $_.Enabled.toString() $uregwksht.Cells.Item($linha,5) = $_.SID.toString() } #Auto ajustar tudo para uma melhor visualização $usedRange = $uregwksht.UsedRange $usedRange.EntireColumn.AutoFit() | Out-Null #Configurações de Página $uregwksht.PageSetup.Zoom = $false $uregwksht.PageSetup.FitToPagesTall = 9999 $uregwksht.PageSetup.FitToPagesWide = 1 $uregwksht.PageSetup.LeftMargin = $excel.InchesToPoints(0.25) $uregwksht.PageSetup.RightMargin = $excel.InchesToPoints(0.25) $uregwksht.PageSetup.TopMargin = $excel.InchesToPoints(0.5) $uregwksht.PageSetup.BottomMargin = $excel.InchesToPoints(0.5) $uregwksht.PageSetup.HeaderMargin = $excel.InchesToPoints(0.25) $uregwksht.PageSetup.FooterMargin = $excel.InchesToPoints(0.25) #Salvando (em pdf ou xlsx) if ($file -like “.pdf”) { $workbook.ExportAsFixedFormat([Microsoft.Office.Interop.Excel.XlFixedFormatType]::xlTypePDF, “$File”) $workbook.Close() } if ($file -like “.xlsx”) { $workbook.SaveAs(“$File”) } $excel.Quit() Write-Host “Relatório salvo em $File” |
Fontes/Referências
https://blog.softartisans.com/2011/06/04/kb-fittopagestall-and-fittopageswide-settings-do-not-take-effect/
https://docs.microsoft.com/en-us/office/vba/api/excel.pagesetup.fittopageswide
https://docs.microsoft.com/en-us/office/vba/api/overview/excel
https://forums.overclockers.co.uk/threads/powershell-code-to-export-excel-to-pdf-in-lanscape-or-fit2page-mode.18790819/
https://learn-powershell.net/2012/12/20/powershell-and-excel-adding-some-formatting-to-your-report/
https://stackoverflow.com/questions/38512800/using-powershell-to-create-a-pdf
https://theolddogscriptingblog.wordpress.com/2010/06/02/how-do-i-print-all-the-excel-files-from-a-directory/
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Entre em contato conosco pelo e-mail equipe@nvlan.com.br.