Neste guia, algumas propriedades de Get-CimInstance -ClassName Win32_Battery
são traduzidas de um int
valor para um valor de string (mais explicativo).
O mapeamento é realizado da seguinte forma, no caso de exemplo da propriedade BatteryStatus
:
Update-TypeData -MemberName BatteryStatus -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_battery" -MemberType ScriptProperty -Value {
Enum EnumBatteryStatus
{
Battery_Power = 1
AC_Power = 2
Fully_Charged = 3
Low = 4
Critical = 5
Charging = 6
Charging_and_High = 7
Charging_and_Low = 8
Charging_and_Critical = 9
Undefined = 10
Partially_Charged = 11
}
[EnumBatteryStatus]($this.PSBase.CimInstanceProperties['BatteryStatus'].Value)
} -Force
Também é afirmado que
Este comando precisa ser executado apenas uma vez por sessão do PowerShell.
Gostaria de executá-los somente se necessário, ou seja: somente se na sessão atual eles ainda não tiverem sido executados.
Mas como identificar a sessão atual? Existe algum ID disponível? A única informação que encontrei se refere a Get-PSSession
, mas (como estou na máquina local, não em uma remota) no meu caso, a saída está vazia.
Estou usando o PowerShell 7.5.