-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathlegacy.ps1
36 lines (27 loc) · 874 Bytes
/
legacy.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
#the legacy approach that we've always used
$file = get-item .\Demo1.ps1
#create a hashtable of property names for a new object
$propHash = @{
Path = $file.FullName
Name = $file.Name
Extension = $file.Extension.Substring(1)
Directory = $file.Directory
Size = $file.Length
Created = $file.CreationTime
Modified = $file.LastWriteTime
}
#create a custom object
$obj = New-Object -TypeName PSObject -Property $propHash
#what does it look like?
$obj
$obj | Get-Member
#insert a type name
$obj.psobject.TypeNames.Insert(0,"myFileObject")
#add members
$obj | Add-Member -MemberType ScriptMethod -Name GetCreatedAge -Value {(Get-Date) - $this.Created}
$obj | Add-Member -MemberType ScriptMethod -Name GetModifiedAge -Value {(Get-Date) - $this.Modified}
#look at the object now
$obj
$obj | Get-Member
#invoke a custom method
$obj.GetCreatedAge().tostring()