PowerShell komutları sonucunda oluşan çıktıları zaman zaman export ederek kıyaslamak yada daha detaylı inceleiyp raporlamak için CSV, HTML yada XML olarak dosya olarak saklayabilir, kullanabilirsiniz. PowerShell convert ve export yeteneği ile bize çok güzel bir çözüm üretiyor bu noktada.

Örneğin aynı işleve sahip birden fazla sunucunuz olduğunu düşünün iki sunucu üzerinde servisleri karşılaştırmanız zaman alan bir çalışmaya yol açabilir. PowerShell ile servis listesini CSV, HTML yada XML olarak çıktılara dönüştürüp export edebilirsiniz.

Bu işlemler için önemli convertto ve export komutlarını tanıyarak başlayalım.

Aşağıdaki komut ile export ve convertto komutlarının yeteneklerini görüntüleyebilirsiniz.
get-command -verb convertto,export

PowerShell açıp komutu yazdığınızda aşağıdaki şekilde bir çıktı alacaksınızdır. Bu bölümde komutlarımızın yetenekleri listelenmiştir.
PS C:\Users\Administrator> get-command -verb convertto,export
 
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Export-BCCachePackage                              1.0.0.0    BranchCache
Function        Export-BCSecretKey                                 1.0.0.0    BranchCache
Function        Export-IscsiTargetServerConfiguration              2.0.0.0    IscsiTarget
Function        Export-ODataEndpointProxy                          1.0        Microsoft.PowerShell.ODataUtils
Function        Export-RDPersonalSessionDesktopAssignment          2.0.0.0    RemoteDesktop
Function        Export-RDPersonalVirtualDesktopAssignment          2.0.0.0    RemoteDesktop
Function        Export-ScheduledTask                               1.0.0.0    ScheduledTasks
Cmdlet          ConvertTo-Csv                                      3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          ConvertTo-EncodedSqlName                           1.0        SQLPS
Cmdlet          ConvertTo-Html                                     3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          ConvertTo-Json                                     3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          ConvertTo-ProcessMitigationPolicy                  1.0.11     ProcessMitigations
Cmdlet          ConvertTo-SecureString                             3.0.0.0    Microsoft.PowerShell.Security
Cmdlet          ConvertTo-TpmOwnerAuth                             2.0.0.0    TrustedPlatformModule
Cmdlet          ConvertTo-WebApplication                           1.0.0.0    WebAdministration
Cmdlet          ConvertTo-Xml                                      3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-Alias                                       3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-BinaryMiLog                                 1.0.0.0    CimCmdlets
Cmdlet          Export-Certificate                                 1.0.0.0    PKI
Cmdlet          Export-Clixml                                      3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-Console                                     3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Export-Counter                                     3.0.0.0    Microsoft.PowerShell.Diagnostics
Cmdlet          Export-Csv                                         3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-DfsrClone                                   2.0.0.0    DFSR
Cmdlet          Export-FormatData                                  3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-IISConfiguration                            1.1.0.0    IISAdministration
Cmdlet          Export-IscsiVirtualDiskSnapshot                    2.0.0.0    IscsiTarget
Cmdlet          Export-ModuleMember                                3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Export-PfxCertificate                              1.0.0.0    PKI
Cmdlet          Export-PSSession                                   3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Export-StartLayout                                 1.0.0.0    StartLayout
Cmdlet          Export-StartLayoutEdgeAssets                       1.0.0.0    StartLayout
Cmdlet          Export-TlsSessionTicketKey                         2.0.0.0    TLS
Cmdlet          Export-UevConfiguration                            2.1.639.0  UEV
Cmdlet          Export-UevPackage                                  2.1.639.0  UEV
Cmdlet          Export-WindowsCapabilitySource                     3.0        Dism
Cmdlet          Export-WindowsDriver                               3.0        Dism
Cmdlet          Export-WindowsImage                                3.0        Dism

Convertto-csv komutunu kullanarak sorgunuzun sonucunu CSV formatına convert edebilirsiniz.

ConvertTo-CSV

PS C:\Users\Administrator> ConvertTo-CSV
 
cmdlet ConvertTo-Csv at command pipeline position 1
Supply values for the following parameters:
InputObject:
#TYPE System.String
"Length"
"0"

ConvertTo-HTML komutunu kullanarak sorgunuzun sonucunu HTML formatına convert edebilirsiniz.

ConvertTo-HTML

PS C:\Users\Administrator> ConvertTo-HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>HTML TABLE</title>
</head><body>
<table>
</table>
</body></html>

ConvertTo-XML komutunu kullanarak sorgunuzun sonucunu XML formatında convert edebilirsiniz.

ConvertTo-XML

PS C:\Users\Administrator> ConvertTo-XML
 
cmdlet ConvertTo-Xml at command pipeline position 1
Supply values for the following parameters:
InputObject:
 
xml                            Objects
---                            -------
version="1.0" encoding="utf-8" Objects

Export-CSV komutunu kullanarak sorgunuzun sonucunu CSV formatında export edebilirsiniz. (Tek başına kullanmanın pek bir anlamı olmuyacaktır. Aşağıdaki çıktıda da görüldüğü üzere inputobject girmeden pek bir anlam ifade etmeyecektir.)

Export-CSV

PS C:\Users\Administrator> export-csv
 
cmdlet Export-Csv at command pipeline position 1
Supply values for the following parameters:
InputObject:
export-csv : You must specify either the -Path or -LiteralPath parameters, but not both.
At line:1 char:1
+ export-csv
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Export-Csv], InvalidOperationException
    + FullyQualifiedErrorId : CannotSpecifyPathAndLiteralPath,Microsoft.PowerShell.Commands.ExportCsvCommand

Out-File komutunu kullanarak da aynı Export komutunda olduğu gibi sorgu sonucunuzun çıktısını dosya olarak çıkartabilirsiniz.

Out-File

PS C:\Users\Administrator> out-file
 
cmdlet Out-File at command pipeline position 1
Supply values for the following parameters:
FilePath:
Out-File : Cannot bind argument to parameter 'FilePath' because it is an empty string.
At line:1 char:1
+ out-file
+ ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Out-File], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.OutFileCommand

Komutlarımızı tanıdığımıza göre artık makalenin başında bahsettiğim Servis kıyaslamasın seneryomuza geri dönelim ve Sunucumuz üzerinde çalışan servislerimizin listesini dosyaya CSV formatında dosyaya alalım.

Get-Service | convertto-csv | out-file servicelist.csv

PS C:\Users\Administrator> Get-Service | convertto-csv | out-file servicelist.csv
PS C:\Users\Administrator>

Aynı işlemi HTML formatında çıktı almak için kullanalım.

Get-Service | convertto-html | out-file servicelist.html

PS C:\Users\Administrator> Get-Service | convertto-html | out-file servicelist.html
PS C:\Users\Administrator>

Bir başka yöntem olarak daha az kod ile export komutunu kullanarak aynı sonuca ulaşabilirsiniz.

Get-Service | export-csv services.csv

PS C:\Users\Administrator> Get-Service | export-csv services.csv
PS C:\Users\Administrator>

Aldığımız çıktıları dir komutu ile kontrol edelim.

PS C:\Users\Administrator> dir
 
 
    Directory: C:\Users\Administrator
 
 
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        9.05.2019     09:07                .vscode
d-r---       15.05.2019     21:21                3D Objects
d-r---       15.05.2019     21:21                Contacts
d-r---        7.06.2019     14:26                Desktop
d-r---       15.05.2019     21:21                Documents
d-r---        7.06.2019     14:22                Downloads
d-r---       15.05.2019     21:21                Favorites
d-r---       15.05.2019     21:21                Links
d-r---       15.05.2019     21:21                Music
d-r---       15.05.2019     21:21                Pictures
d-r---       15.05.2019     21:21                Saved Games
d-r---       15.05.2019     21:21                Searches
d-r---       15.05.2019     21:21                Videos
-a----       11.06.2019     12:35         131062 servicelist.csv
-a----       11.06.2019     12:35         183550 servicelist.html
-a----       11.06.2019     12:37          65483 services.csv
 
 
PS C:\Users\Administrator>

C:\Users\Administrator dizinine doyamızın olduştuğunu göreceksiniz.

Bu komutları bir çok raporlama için geliştirip kullanabilirsiniz çok rahat analizler yapmanızı ve sorun tespitlerinizi kolaylaştıraaktır. Aynı işlemleri log yönetiminde yada roles and features içinde kullanabilrisiniz. Aslına bakarsanız nerede kullanacağınız size kalmış çıktı sonuçlarınızı bu konutlar ile export edip kullanabilirsiniz.