Dane w PowerShellu, czyli co musisz wiedzieć o imporcie i eksporcie

Dane w PowerShellu

Dlaczego import i eksport danych są ważne?

Popularne formaty plików w PowerShell

Eksportowanie danych

Eksport do CSV

PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet | 
Export-Csv -Path "C:\Raporty\Procesy.csv" -NoTypeInformation
Wygląd pliku csv po zapisie
PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet |
ConvertTo-Json | Out-File -FilePath "C:\Raporty\Procesy.json"
Wygląd danych w formacie JSON
PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet | 
ConvertTo-Html -Title "Lista procesów" -PreContent "<h2>Aktywne procesy w systemie</h2>" | 
Out-File "C:\Raporty\Procesy.html"
Wygląd danych w formacie html
PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet |
Export-Clixml -Path "C:\Raporty\procesy.xml"
Wygląd danych w formacie xml
PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet | 
Out-File -FilePath "C:\Raporty\procesy.txt"
Wygląd danych w formacie txt
PS C:\Users\Admin> Get-Process | Select-Object Name, Id, CPU, WorkingSet >> "C:\Raporty\procesy.log"
Wygląd danych w formacie log z zastosowaniem operatora przekierowania

Importowanie danych

Import pliku CSV

PS C:\Users\Admin> Import-Csv -Path "C:\Raporty\Procesy.csv"

Name                             Id    CPU         WorkingSet
----                             --    ---         ----------
AggregatorHost                   7196              7163904   
ApMsgFwd                         13232 693.15625   1888256   
ApntEx                           8376  0.34375     1318912   
Apoint                           9824  230.296875  4837376   
AppActions                       10960 11.703125   21032960  
ApplicationFrameHost             12604 10.796875   28385280  
ApRemote                         19852 0.09375     999424    
audiodg                          9948  0.875       22138880  
BrCcUxSys                        8428  0.671875    2428928   
BrCtrlCntr                       19576 0.890625    1970176   
BrYNSvc                          6648              2875392   
chrome                           4572  637.671875  131788800 
chrome                           7588  6074.21875  419487744 
chrome                           9400  45.0625     11280384  
chrome                           9568  1373.578125 126390272 
chrome                           11044 290.59375   283103232 

Warto wiedzieć

$procesy = Import-Csv -Path "C:\Raporty\Procesy.csv"

Import pliku JSON

PS C:\Users\Admin> $procesy = Get-Content -Path "C:\Raporty\procesy.json" | ConvertFrom-Json

Import pliku xml

PS C:\Users\Admin> $procesy = Import-Clixml -Path "C:\Raporty\procesy.xml"
$xml = [xml](Get-Content "C:\Raporty\procesy.xml" -Raw)

Import zwykłego tekstu

PS C:\Users\Admin> $procesy = Get-Content "C:\Raporty\procesy.txt" | ForEach-Object {
    $line = $_ -replace '^\@\{|\}$'       
    $wlasciwosci = $line -split '; '            
    $objekt = @{}                             

    foreach ($wlasciwosc in $wlasciwosci) {
        $klucz, $wartosc = $wlasciwosc -split '='
        $objekt[$klucz] = $wartosc
    }

    [PSCustomObject]$objekt
}

Kilka praktycznych przykładów

Archiwizacja logów do pliku tekstowego

PS C:\Users\Admin> Get-WinEvent -ComputerName Serv_01 -LogName Setup > "C:\Raporty\Serv_01_Setup_$(Get-Date -Format yyyyMMdd).log"

Import listy użytkowników AD z pliku CSV

$users = Import-Csv -Path "C:\Import\New_Users.csv"

foreach ($user in $users) {
    New-ADUser -Name $user.Name -SamAccountName $user.Username -AccountPassword (ConvertTo-SecureString $user.Password -AsPlainText -Force) -Enabled $true
}

Podsumowanie


To wszystko na dziś!

Jeśli masz ciekawe spostrzeżenia lub doświadczenia w tym temacie – koniecznie podziel się nimi w komentarzach.
A jeśli moje materiały są dla Ciebie pomocne, możesz postawić mi wirtualną kawę.

Dzięki za wsparcie!

Postaw mi kawę na buycoffee.to

Adam Pietrzak

Administrator | Trener i autor szkoleń | Entuzjasta PowerShella

Administrator systemów i sieci wsparcia działań wojskowych z ponad 10-letnim doświadczeniem. Praktyk w dziedzinie zarządzania Active Directory, bezpieczeństwa systemu Windows oraz automatyzacji zadań (PowerShell). Trener i twórca materiałów edukacyjnych (szkolenia, warsztaty, artykuły, podręczniki). Pasjonat dzielenia się wiedzą i wspierania początkujących administratorów IT. Prywatnie – amator aktywnego wypoczynku i rodzinnych podróży.


PowerShell - 10 sposobów na optymalizację codziennej pracy
Podziel się

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *