2011-01-19 15 views
7

Quiero escribir el ID del proceso actual de PowerShell. Esto funciona:cadenas Concatenate y resultados de la expresión en PowerShell

$processId = $([System.Diagnostics.Process]::GetCurrentProcess()).Id 
Write-Output "My process ID is $processId" 

Sin embargo, quiero hacerlo en una línea, si es posible. Sustituir el $([System.Diagnostics.Process]::GetCurrentProcess()).Id por la variable no parece evaluar la expresión.

Respuesta

12
'My process id is {0}' -f [System.Diagnostics.Process]::GetCurrentProcess().Id 

Y si usamos variables automáticas :

'My process id is {0}' -f $pid 
+0

Oh, me gusta eso - formato de cadena fácil. Estoy cambiando mi respuesta aceptada a esta. – EMP

7
Write-Output "My process ID is $([System.Diagnostics.Process]::GetCurrentProcess().Id)" 

Básicamente solo necesita mover el paréntesis de cierre después de la Id.

+0

Ah, gracias, que funciona! – EMP

8

Esto podría ser un poco más simple:

$pid 

o

"My process id is $pid" 

Para obtener más información sobre las variables automáticas ejecutar:

man about_automatic_variables 
+0

1 Aunque mi pregunta era sobre todo acerca de la concatenación de cadenas esto es muy útil saber, también. – EMP

+1

Sí, para eso quiere usar el 'operador de subexpresiones' dentro de la cadena, p. "blah $ (.. expresión ...) yada". PowerShell evaluará la expresión dentro de '$()' (es decir, subexpresión) y representará los resultados en una cadena e insertará esa cadena en esa ubicación. –

Cuestiones relacionadas