PowerShell: XML elementidesse kirjutamise skript: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Onaaris (talk | contribs)
Created page with '<# .Synopsis Loob XML faili, kuhu on lisatud "Masin", "Ketas", "Kokku", "Vaba", "Aeg" elemendid ning küsib masinalt arvutinime, kettanime, ketta suurust, vaba ruumi kettal n…'
 
Onaaris (talk | contribs)
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
<#
<#
   
   
.Synopsis
.Synopsis
Loob XML faili, kuhu on lisatud "Masin", "Ketas", "Kokku", "Vaba", "Aeg" elemendid ning küsib masinalt arvutinime, kettanime, ketta suurust, vaba ruumi kettal ning lisab need XML elementidesse.
      Loob XML faili, kuhu on lisatud "Masin", "Ketas", "Kokku", "Vaba", "Aeg" elemendid ning küsib masinalt  
      arvutinime kettanime, ketta suurust, vaba ruumi kettal ning lisab need XML elementidesse.
   
   
.DESCRIPTION
.DESCRIPTION
Eelnevalt luuakse XML elementide template. Template failist tehakse eraldi koopia, et lisada XML elementidesse arvutilt küsitud andmed. Parameetreid vaja ei ole.
      Eelnevalt luuakse XML elementide template. Template failist tehakse eraldi koopia, et lisada XML    
      elementidesse arvutilt küsitud andmed. Parameetreid vaja ei ole.
   
   
.EXAMPLE
.EXAMPLE
C:\PS>.\kodune ver1.ps1
      C:\PS>.\kodune ver1.ps1
   
   
.NOTES
.NOTES
Autor: Oliver Naaris
      Autor: Oliver Naaris
Versioon: 1  
      Versioon: 1  
Muutmise kuup2ev: 20.04.2012
      Muutmise kuup2ev: 20.04.2012
   
   
.LINK
.LINK
https://wiki.itcollege.ee/index.php/PowerShell:_SQLi_baasi_kirjutamise_skript
      https://wiki.itcollege.ee/index.php/PowerShell:_XML_elementidesse_kirjutamise_skript
#>
   
   
#>
# Loob eraldi xml faili templatei.
 
$template = @'
# Loob eraldi xml faili templatei.
$template = @'
<Info machine='pc1' version='1.0'>
 
  <Masin>
<Info machine='pc1' version='1.0'>
    <Nimi></Nimi>
 
    <Ketas></Ketas>
    <Masin>
    <Suurus></Suurus>
 
    <Vaba></Vaba>
        <Nimi></Nimi>
    <Aeg></Aeg>
 
  </Masin>
        <Ketas></Ketas>
</Info>
 
        <Suurus></Suurus>
'@
 
#määrab ära xml faili salvestus koha ja kodeeringu.
        <Vaba></Vaba>
  $template | Out-File $home\test.xml -encoding UTF8
 
        <Aeg></Aeg>
# laeb xml-i templatei
 
  $xml = New-Object xml
    </Masin>
  $xml.Load("$home\test.xml")
 
</Info>
# võtab templatei koopia
 
  $newinfo = (@($xml.Info.Masin)[0]).Clone()
'@
#määrab ära xml faili salvestus koha ja kodeeringu.
# kasutab win32_computersystem klassi, et välja tuua name meetod ning see xml faili kirjutada.  
$template | Out-File $home\test.xml -encoding UTF8
    Get-WmiObject Win32_Computersystem |  
 
                ForEach-Object {
# laeb xml-i templatei
                                $newinfo = $newinfo.clone()
$xml = New-Object xml
                                $newinfo.Nimi = $_.Name
$xml.Load("$home\test.xml")
                                $xml.Info.AppendChild($newinfo) > $null
 
                              }
# võtab templatei koopia
$newinfo = (@($xml.Info.Masin)[0]).Clone()
# kasutab win32_logicaldisk klassi, et välja tuua deviceid,size,freespace meetodid ning need xml faili  
 
kirjutada.  
# kasutab win32_computersystem klassi, et välja tuua name meetod ning see xml faili kirjutada.  
Get-WMIObject Win32_LogicalDisk -filter DriveType=3 |  
Get-WmiObject Win32_Computersystem |  
      ForEach-Object {
ForEach-Object {
                    $newinfo = $newinfo.clone()
$newinfo = $newinfo.clone()
                    $newinfo.Ketas = $_.DeviceId
$newinfo.Nimi = $_.Name
                    $newinfo.Suurus = $_.Size.toString()
    $xml.Info.AppendChild($newinfo) > $null
                    $newinfo.Vaba = $_.FreeSpace.toString()
}
                    $xml.Info.AppendChild($newinfo) > $null
# kasutab win32_logicaldisk klassi, et välja tuua deviceid,size,freespace meetodid ning need xml faili kirjutada.  
                    }
Get-WMIObject Win32_LogicalDisk -filter DriveType=3 |  
ForEach-Object {
#kustutab ülejäänud pahna ära
$newinfo = $newinfo.clone()
    $xml.info.masin |  
    $newinfo.Ketas = $_.DeviceId
    Where-Object { $_.Ketas -eq "" } |  
    $newinfo.Suurus = $_.Size.toString()
    ForEach-Object  { [void]$xml.info.RemoveChild($_) }
    $newinfo.Vaba = $_.FreeSpace.toString()
    $xml.Info.AppendChild($newinfo) > $null
#panb kirja kuupäev
}
    $newinfo.Aeg = "$(Get-Date -format o)"
#kustutab ülejäänud pahna ära
    $xml.Info.AppendChild($newinfo)
$xml.info.masin |  
Where-Object { $_.Ketas -eq "" } |  
# salvestab xml faili
ForEach-Object  { [void]$xml.info.RemoveChild($_) }
    $xml.Save("$home\info.xml")
 
#panb kirja kuupäev
$newinfo.Aeg = "$(Get-Date -format o)"
$xml.Info.AppendChild($newinfo)
 
# salvestab xml faili
$xml.Save("$home\info.xml")

Latest revision as of 11:34, 20 April 2012

<#

.Synopsis
      Loob XML faili, kuhu on lisatud "Masin", "Ketas", "Kokku", "Vaba", "Aeg" elemendid ning küsib masinalt   
      arvutinime kettanime, ketta suurust, vaba ruumi kettal ning lisab need XML elementidesse.

.DESCRIPTION
      Eelnevalt luuakse XML elementide template. Template failist tehakse eraldi koopia, et lisada XML     
      elementidesse arvutilt küsitud andmed. Parameetreid vaja ei ole.

.EXAMPLE
      C:\PS>.\kodune ver1.ps1

.NOTES
      Autor: Oliver Naaris
      Versioon: 1 
      Muutmise kuup2ev: 20.04.2012

.LINK
      https://wiki.itcollege.ee/index.php/PowerShell:_XML_elementidesse_kirjutamise_skript
#>

# Loob eraldi xml faili templatei.
$template = @'

<Info machine='pc1' version='1.0'>
  <Masin>
    <Nimi></Nimi>
    <Ketas></Ketas>
    <Suurus></Suurus>
    <Vaba></Vaba>
    <Aeg></Aeg>
  </Masin>
</Info>

'@
#määrab ära xml faili salvestus koha ja kodeeringu.
  $template | Out-File $home\test.xml -encoding UTF8

# laeb xml-i templatei
  $xml = New-Object xml
  $xml.Load("$home\test.xml")

# võtab templatei koopia
  $newinfo = (@($xml.Info.Masin)[0]).Clone()

# kasutab win32_computersystem klassi, et välja tuua name meetod ning see xml faili kirjutada. 
   Get-WmiObject Win32_Computersystem | 
               ForEach-Object {
                               $newinfo = $newinfo.clone()
                               $newinfo.Nimi = $_.Name
                               $xml.Info.AppendChild($newinfo) > $null
                              }

# kasutab win32_logicaldisk klassi, et välja tuua deviceid,size,freespace meetodid ning need xml faili    
kirjutada. 
Get-WMIObject Win32_LogicalDisk -filter DriveType=3 | 
     ForEach-Object {
                    $newinfo = $newinfo.clone()
                    $newinfo.Ketas = $_.DeviceId
                    $newinfo.Suurus = $_.Size.toString()
                    $newinfo.Vaba = $_.FreeSpace.toString()
                    $xml.Info.AppendChild($newinfo) > $null
                    }

#kustutab ülejäänud pahna ära
    $xml.info.masin | 
    Where-Object { $_.Ketas -eq "" } | 
    ForEach-Object  { [void]$xml.info.RemoveChild($_) }

#panb kirja kuupäev
    $newinfo.Aeg = "$(Get-Date -format o)"
    $xml.Info.AppendChild($newinfo)

# salvestab xml faili
    $xml.Save("$home\info.xml")