Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Formátování řetězců v PowerShell pomocí -f operátoru a escaping
srpen 29
Formátování řetězců v PowerShell pomocí -f operátoru a escaping

Zase jedna blbina v PowerShell mi dala trošku zabrat. Měl jsem něco takovéhohle:

'Associators Of {Win32_DiskDrive.DeviceID="{0}"} WHERE ResultClass = Win32_DiskPartition' -f $diskDeviceID.Replace('\', '\\')

Prostě normální použití operátoru -f na formátování řetězce. A pořád mi to vracelo podivnou chybu:

Error formating a string: input string was not in a correct format

Snažil jsem se to různě závorkovat a zmateně pár minut blbnul, až mi došlo, že v tom WMI dotazu mám složené závorky. Takže jasně, musím je nějak escape-nout. Ale jak? Takže zase pár minut hledání, backslash nefungoval, zpětný apostrof nefungoval, prostě peklo. Gůgl mlčí.

Výsledek? Musíte každou ne-formátovací složenou závorku zdvojit. Takže:

'Associators Of {{Win32_DiskDrive.DeviceID="{0}"}} WHERE ResultClass = Win32_DiskPartition' -f $diskDeviceID.Replace('\', '\\')

Tak snad to někomu pomůže.

Comments

There are no comments for this post.

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments