2013-08-12 12 views
6

Il nostro reparto IT si sta spostando su Windows 8 e tutti stanno iniziando a utilizzare PowerShell come ambiente predefinito per la riga di comando di Windows anziché lo .Come passare le stringhe non elaborate ai comandi tramite la riga di comando in PowerShell?

Sfortunatamente PowerShell valuta le cose che vengono digitate in esso ed è piuttosto difficile passare argomenti di riga di comando non elaborati ai programmi.

Ad esempio, ho un programma inventory.exe che accetta una stringa speciale che ne formatta l'output. Non posso passare questa stringa speciale in PowerShell come ottengo un errore di misterioso:

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

Suppongo che PowerShell ha valutato la stringa 'inventory "," date "," owner' in qualche modo e qualcos'altro è stato passato al inventory.exe programma come risultato stampato un errore.

Questo programma funziona bene in cmd.exe:

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

Diventa ancora peggio se si digita i caratteri, come %, $ in PowerShell.

Qualcuno sa come passare stringhe non elaborate ai comandi in PowerShell?

risposta

8

Se si utilizza Powershell v3.0, esiste una nuova sintassi per fare in modo che Powershell eviti qualsiasi analisi aggiuntiva per gli argomenti. Qualcosa di simile:

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

Non ci sono altri approcci come accennato qui: 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 E 'un ottimo link! –

+0

Non conoscevo questa sintassi, grazie :) –

Problemi correlati