-
Notifications
You must be signed in to change notification settings - Fork 1
/
Set-ToStringMethod.ps1
62 lines (50 loc) · 1.26 KB
/
Set-ToStringMethod.ps1
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
function Set-ToStringMethod {
<#
.SYNOPSIS
Changes the ToString() function ran on an object.
.DESCRIPTION
Changes the function ran on a
pscustomobject when calling the ToString() method.
The variable
.EXAMPLE
$ScriptBlock = {
$g=$this.general
$b=$g.'Overall bit rate'
$d=$g.Duration
$z=$g.'File size'
$f=$g.Format
"$f $z $b $d"
}
(dir ~/Movies/*.mp4)[0] | Get-MediaInfo -ov info
$info.tostring()
#System.Collections.ArrayList
Set-ToStringMethod $info $ScriptBlock
$info.tostring()
#MPEG-4 253 MiB 12.0 Mb/s 2 min 56 s
#>
[CmdletBinding()]
param (
[Parameter(Mandatory,Position=0)]
[ValidateNotNull()]
[psobject]
$InputObject,
# Use the variable $this to refer to the InputObject
[Parameter(Mandatory,Position=1)]
[scriptblock]
$ScriptBlock
)
begin {
}
process {
$memProps = @{
Force = $true
MemberType = 'ScriptMethod'
Name = 'ToString'
InputObject = $InputObject
Value = $ScriptBlock
}
Add-Member @memProps
}
end {
}
}#END: function Set-ToStringMethod {}