-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy path1016.ps1
More file actions
101 lines (89 loc) · 3.7 KB
/
1016.ps1
File metadata and controls
101 lines (89 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#.Synopsis
# Draw pie charts of server memory usage by process
#.Description
# Uses PowerBoots to draw a pipe-chart of each computer's memory use. While you wait for that information
# to be gathered, it shows you the latest xkcd comic. ##DEPEND-ON -Function Get-Comic
# Uses the Transitionals library for nice transitions ##DEPEND-ON -Assembly Transitionals http://www.codeplex.com/transitionals
#.Parameter hosts
# The hostnames of the computers you want memory charts for
#.Example
# Get-MemoryChart localhost
#
# Returns a pie-chart of the memory on your local PC
#.Example
# Get-MemoryChart Server01,Server02
#
# Returns a pie-chart of the memory on Server01, and Server02
# Note that this requires WMI and authorization...
#
Param([string[]]$hosts = "localhost")
Import-Module PowerBoots
if(!(Get-Command Chart -EA SilentlyContinue)) {
Add-BootsContentProperty 'DataPoints', 'Series'
Add-BootsFunction -Assembly "~\Documents\WindowsPowershell\Libraries\WPFVisifire.Charts.dll" 2>$Null
Add-BootsFunction -Assembly "~\Documents\WindowsPowershell\Libraries\Transitionals.dll"
}
## And this is how you use a script which might not be there...
$comical = Get-Command Get-Comic -EA SilentlyContinue
if($comical) {
$script:comic = Get-Comic xkcd
$image = [system.drawing.image]::fromfile( $comic.FullName )
$script:width = $image.Width
$image.Dispose()
}
#$window = Boots { Image -Source $xkcd -MinHeight 100 } -Popup -Async
$limitsize = 10mb
$labellimitsize = 15mb
$window = Boots {
DockPanel {
ListBox -DisplayMember Name -Ov global:list ` # -width 0
-On_SelectionChanged { $global:container[0].Content = $global:list[0].SelectedItem }
# TransitionElement -Transition $(RotateTransition -Angle 45) `
Frame `
-Name TransitionBox -Ov global:container `
-MinWidth 400 -MinHeight 400 -MaxHeight 600 `
-Content {
StackPanel {
Label -FontSize 42 "Loading ..."
if($comical) {
Image -Source $comic.FullName -MaxWidth $width
}
} |
Set-AttachedProperty ([System.Windows.Navigation.JournalEntry]::NameProperty) "XKCD Comic"
}
} -LastChildFill $true
} -MinHeight 400 -Async -Popup -Passthru
sleep 2;
$jobs = @()
ForEach($pc in $hosts) {
$jobs += gwmi Win32_Process -ComputerName $pc -AsJob;
}
while($jobs) {
$job = Wait-Job -Any $jobs
Invoke-BootsWindow $window {
if($list -is [System.Collections.ArrayList]) {
$list = $list[0];
$list.Padding = "2,2,5,2"
}
$name = $($job.Location -Replace "[^a-zA-Z_0-9]" -replace "(^[0-9])",'_$1')
# $null = $list.Items.Add(
$global:container[0].Content = `
$( Chart {
DataSeries -LabelText $job.Location {
ForEach($proc in (Receive-Job $job | Sort WorkingSetSize)) {
if($proc.WorkingSetSize -gt $limitsize) {
DataPoint -YValue $proc.WorkingSetSize -LabelText $proc.Name `
-LabelEnabled $($proc.WorkingSetSize -gt $labellimitsize) `
-ToolTipText "$($proc.Name): #YValue (#Percentage%)"
}
}
} -RenderAs Pie -ShowInLegend $false
} -Watermark $false -AnimationEnabled $true -Name $name |
Set-AttachedProperty ([System.Windows.Navigation.JournalEntry]::NameProperty) $name
)
); $list.SelectedIndex = $list.Items.Count - 1
}
$jobs = $jobs -ne $job
Remove-Job $job.Id
Sleep 5
}