2011-01-19 15 views
7

Geçerli işlem kimliğini PowerShell'de yazmak istiyorum. Bu çalışır:PowerShell'de dizeleri ve ifade sonuçlarını birleştir

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

Ancak, mümkünse tek satırda yapmak istiyorum. Değişkenin $([System.Diagnostics.Process]::GetCurrentProcess()).Id yerine kullanılması ifadeyi değerlendirmiyor gibi görünüyor.

cevap

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

Ve:

$pid 

veya otomatik değişkenler hakkında daha fazla bilgi için

"My process id is $pid" 

yürütmek :

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

Oh, bunu sevdim - kolay dize biçimlendirme. Kabul edilen cevabımı buna değiştiriyorum. – EMP

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

Temel olarak, yalnızca kimlik doğrulamasından sonra kapanış parantezini taşımanız gerekiyordu.

+0

Ah, teşekkürler, bu işe yarıyor! – EMP

8

Bu biraz basit olabilir: Biz otomatik değişkenler kullanırsanız

man about_automatic_variables 
+0

+1 Sorularım esas olarak dize birleştirme ile ilgili olsa da, bu da bilmenizde yardımcı oluyor. – EMP

+1

Evet, örneğin "alt-ifade operatörü" dizgesini kullanmak istiyorsunuz. "blah $ (.. ifade ..) yada". PowerShell, ifadeyi '$()' (yani alt-ifade) içinde değerlendirecek ve sonuçları bir dizgeye dönüştürecek ve bu dizeyi o konuma ekleyecektir. –