2011-01-19 20 views
7

Desidero scrivere l'ID di processo corrente in PowerShell. Questo funziona:Concatena stringhe e risultati di espressioni in PowerShell

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

Tuttavia, voglio farlo in una sola riga, se possibile. Sostituire lo $([System.Diagnostics.Process]::GetCurrentProcess()).Id per la variabile non sembra valutare l'espressione.

risposta

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

E se usiamo variabili automatiche :

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

Oh, mi piace - facile formattazione delle stringhe. Sto cambiando la mia risposta accettata a questo. – EMP

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

Fondamentalmente era sufficiente spostare la parentesi chiusa dopo l'Id.

+0

Ah, grazie, funziona! – EMP

8

Questo potrebbe essere un po 'più semplice:

$pid 

o

"My process id is $pid" 

Per ulteriori informazioni sulle variabili automatiche eseguire:

man about_automatic_variables 
+0

+1 Anche se la mia domanda riguardava principalmente la concatenazione di stringhe, è molto utile saperlo. – EMP

+1

Sì, per questo si desidera utilizzare l'operatore di 'subexpression' all'interno della stringa, ad es. "blah $ (.. espressione ..) yada". PowerShell valuterà l'espressione all'interno di '$()' (es. Sottoespressione) e renderà i risultati su una stringa e inserirà quella stringa in quella posizione. –

Problemi correlati