Es posible en código administrado (C#/VB) al crear su propia clase PSVariable, pero no directamente en script puro, lo siento. Digo "script puro" porque en powershell v2 puedes alinear C# con add-type. Dicho esto, podría hackearlo en secuencias de comandos confiando en llamadas ToString implícitas, pero esto no sería confiable en todas las situaciones. Ejemplo:
# empty custom object
$o = new-object psobject
# override ToString with a PSScriptMethod member
$o.psobject.members.add((new-object `
System.Management.Automation.PSScriptMethod "ToString", {
"ticks: $([datetime]::now.ticks)" }))
ps> $o
ticks: 634256043148813794
ps> $o
ticks: 634256043165574752
Tenga en cuenta que el conteo de ticks es diferente en cada evaluación de la variable. Si, por supuesto, si solo usa una función normal en lugar de una variable, esto es mucho más fácil.
function Ticks { [datetime]::now.ticks }
# use as a parameter - note the use of (and)
ps> write-host (ticks)
634256043148813794
# use in a string - note the use of $(and)
ps> write-host "ticks $(ticks)"
ticks 634256043165574752
Esperanza esto ayuda
-Oisin
por qué no usar un método? http://www.computerperformance.co.uk/powershell/powershell_functions.htm – asawyer
En su ejemplo, dir $ myvar no funcionaría, porque write-host no se generaría para dir. Desea escribir-salida, pero realmente no necesita eso, solo necesita '$ myvar = 'foo'' – Jaykul