PowerShell 技能连载 - 对象属性操作
属性操作基础
1 | # 动态添加属性 |
应用场景
动态数据增强:
1
2
3Get-ChildItem | ForEach-Object {
$_ | Add-Member -MemberType ScriptProperty -Name SizeMB -Value { [math]::Round($this.Length/1MB,2) }
}自定义输出视图:
1
2
3
4$diskInfo = Get-CimInstance Win32_LogicalDisk
$diskInfo | Select-Object DeviceID,VolumeName,
@{Name='Total(GB)';Expression={$_.Size/1GB -as [int]}},
@{Name='Free(%)';Expression={($_.FreeSpace/$_.Size).ToString("P")}}
最佳实践
使用PSObject包装原生对象
1
2
3
4
5
6$rawObject = Get-WmiObject Win32_Processor
$customObj = [PSCustomObject]@{
Name = $rawObject.Name
Cores = $rawObject.NumberOfCores
Speed = "$($rawObject.MaxClockSpeed)MHz"
}扩展方法实现属性验证
1
2
3
4
5
6
7class SecureProcess {
[ValidatePattern("^\w+$")]
[string]$ProcessName
[ValidateRange(1,100)]
[int]$Priority
}利用属性集提升效率
1
2Update-TypeData -TypeName System.IO.FileInfo -MemberType ScriptProperty
-MemberName Owner -Value { (Get-Acl $this.FullName).Owner }
PowerShell 技能连载 - 对象属性操作
http://blog.vichamp.com/2025/02/06/powershell-object-properties/