2013-08-12 5 views
6

BT departmanımız Windows 8'e geçiyor ve herkes PowerShell'i varsayılan windows komut satırı ortamı olarak cmd.exe yerine kullanmaya başlıyor.Ham dizeleri PowerShell'deki komut satırından komutlara nasıl geçiririm?

Ne yazık ki PowerShell yazdığınız şeyleri değerlendirir ve ham komut satırı argümanlarını programlara aktarmak oldukça zordur. Örneğin, çıktısını biçimlendiren özel bir dize alan bir program inventory.exe var. Ben gizemli hata olsun ben PowerShell içinde bu özel dizeyi geçemez:

PS C:\Users\Administrator> inventory.exe 'inventory "," date "," owner' 
inventory.exe error: No comma allowed 

Ben PowerShell nasılsa 'inventory "," date "," owner' dize değerlendirmiş ve sonuç olarak inventory.exe programa geçildi başka bir şey bunun bir hata baskılı varsayalım.

Bu program cmd.exe Tamam çalışır:

C:\Documents and Settings\boda> inventory.exe 'inventory "," date "," owner' 
... (the output that I expect) ... 

Ben karakterleri yazın eğer daha da kötü olur böyle %, PowerShell $ olarak.

PowerShell'de ham dizeleri komutlara nasıl geçeceğini bilen var mı?

cevap

8

Eğer Powershell v3.0 kullanıyorsanız, Powershell'in argümanlar için fazladan ayrıştırılmasını önlemek için yeni bir sözdizimi vardır. Bir şey gibi: Burada belirtildiği gibi

inventory.exe --% 'inventory', 'date', 'owner' 

diğer yaklaşım vardır: http://blogs.technet.com/b/josebda/archive/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters.aspx

+0

1 Bu büyük bir bağlantı var! –

+0

Bu sözdizimini bilmiyordum, teşekkürler :) –