Difference between revisions of "Powershell"

From Richard's Wiki
Jump to: navigation, search
(Powershell V2)
Line 49: Line 49:
 
  }
 
  }
 
  }
 
  }
 +
 +
===== List all software installed on local computer to Excel =====
 +
$a = New-Object -comobject Excel.Application
 +
$a.visible = $True
 +
$b = $a.Workbooks.Add()
 +
$c = $b.Worksheets.Item(1)
 +
$c.Cells.Item(1,1) = "Name"
 +
$c.Cells.Item(1,2) = "Version"
 +
$c.Cells.Item(1,3) = "Publisher"
 +
$c.Cells.Item(1,4) = "InstalledOn"
 +
$c.Cells.Item(1,5) = "HelpLink"
 +
$c.Cells.Item(1,6) = "UninstallString"
 +
$d = $c.UsedRange
 +
$d.Interior.ColorIndex = 19
 +
$d.Font.ColorIndex = 11
 +
$d.Font.Bold = $True
 +
$intRow = 2
 +
$Keys = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
 +
$Items = $keys |foreach-object {Get-ItemProperty $_.PsPath}
 +
foreach ($item in $items)
 +
  {
 +
    $c.Cells.Item($intRow,1) = $item.Displayname
 +
    $c.Cells.Item($intRow,2) = $item.DisplayVersion
 +
    $c.Cells.Item($intRow,3) = $item.Publisher
 +
    $c.Cells.Item($intRow,4) = $item.InstallDate
 +
    $c.Cells.Item($intRow,5) = $item.HelpLink
 +
    $c.Cells.Item($intRow,6) = $item.UninstallString
 +
    $intRow = $intRow + 1
 +
  }
 +
$d.EntireColumn.AutoFit()
  
 
===== Powershell V2 =====
 
===== Powershell V2 =====

Revision as of 23:07, 29 March 2010

GUI IDE

A useful Powershell GUI IDE (with debugger) is available at http://powergui.org/

Recursive delete of files
get-childitem . -include *scc,bin,obj -recurse | foreach ($_) {remove-item -recurse -force $_.fullname}
Periodically poll a website and log response times
$url="http://xml.weather.yahoo.com/forecastrss?p=10036"
$web = new-object system.net.webclient
$datetime = new-object system.datetime
$log = "log.txt"
while (1) {
 $start = [DateTime]::Now
 $zz = $web.DownloadString($url)
 $end = [DateTime]::Now
 $duration = $end - $start
 "" + [DateTime]::Now + ": Duration " + $duration  >> $log
 sleep 60
}
Open Enterprise Architect Repository
$rep = new-object -COM EA.Repository
$rep.OpenFile("C:\eATEST.eap")
Parse Enterprise Architect XML Files in a directory
## An example script that will look at all the xml files
## in the specified directory, assume they are valid 
## Enterprise Architect export files, and try to list
## the names of all the packages in each file
param(
 $folderPath = $(throw 'folderPath must be supplied')
)
$xmlFiles = (resolve-path "$folderPath\*.xml")
foreach ($xmlFile in $xmlFiles) {
	$xmlFile = $xmlFile.Path
	$xmlDoc = new-object system.xml.xmldocument
	$xmlDoc.Load($xmlFile);
	$nsMgr = New-Object system.xml.XmlNamespaceManager  $xmlDoc.get_NameTable()
	$nsmgr.AddNamespace("UML", "omg.org/UML1.3")
	if ($xmlDoc.XMI) {
		$packages = $xmlDoc.XMI.SelectNodes("//UML:Package", $nsMgr)
		if ($packages.Count -gt 0) {
			Write-Host $xmlFile ":"
			foreach ($package in $packages) {
				Write-Host $package.name
			}
		}
	}
}
List all software installed on local computer to Excel
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Name"
$c.Cells.Item(1,2) = "Version"
$c.Cells.Item(1,3) = "Publisher"
$c.Cells.Item(1,4) = "InstalledOn"
$c.Cells.Item(1,5) = "HelpLink"
$c.Cells.Item(1,6) = "UninstallString"
$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$intRow = 2
$Keys = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
$Items = $keys |foreach-object {Get-ItemProperty $_.PsPath}
foreach ($item in $items)
 {
   $c.Cells.Item($intRow,1) = $item.Displayname
   $c.Cells.Item($intRow,2) = $item.DisplayVersion
   $c.Cells.Item($intRow,3) = $item.Publisher
   $c.Cells.Item($intRow,4) = $item.InstallDate
   $c.Cells.Item($intRow,5) = $item.HelpLink
   $c.Cells.Item($intRow,6) = $item.UninstallString
   $intRow = $intRow + 1
 }
$d.EntireColumn.AutoFit()
Powershell V2