Powershell: рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдУ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЬреВрди 2020  ┬╖  189рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PowerShell/PowerShell

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдХрд╛рдЯрдиреЗ рдФрд░ рдЪрд┐рдкрдХрд╛рдиреЗ рд╕реЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдЙрди рдореВрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рдЧрд▓рдд рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдореВрд▓ рдХрдорд╛рдВрдб рдпрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред PowerShell рдХреЗ рдкрд╛рд╕ рдПрдХ --% рд╡рд┐рд╢реЗрд╖ рддрд░реНрдХ рд╣реИ рдЬрдм рджреЗрд╢реА рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рддрд░реНрдХ рднреА рдорд╛рдирддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдореБрджреНрджреЗ рд╣реИрдВ:

  1. рдпрд╣ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛
  2. | , && , рдФрд░ || рдкреВрд░реНрд╡рддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП: wsl --% ls | less wsl ls рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ less рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╛рдЗрдк рдХрд░реЗрдВрдЧреЗ less wsl рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп
  3. рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдХрд╛рдЯрддреЗ рдФрд░ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ --% рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
  4. рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░,% - рдХреЗ рдмрд╛рдж рдЖрд░реНрдЧрд▓реНрд╕ рдХреЛ рд╢рдмреНрджрд╢рдГ w / o рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпреВрдирд┐рдХреНрд╕ рдкрд░ рджреЗрд╢реА рдХрдорд╛рдВрдб рд╢реЗрд▓ рдХреЛ рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг

рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рдирдпрд╛ --% (рдореВрд▓ рдирд┐рд╡рд╛рд╕реА) рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред

рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рдж рдХреЛрдИ рднреА рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдПрд╕ рдХреЗ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓" рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдЧреАред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдпрд╣ cmd.exe рд╣реЛрдЧрд╛ рдФрд░ рдпреВрдирд┐рдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдпрд╣ / bin / sh рд╣реЛрдЧрд╛ред рдпрд╣ рдпреВрдирд┐рдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ %variable% рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред --% рд╕реНрд╡рд┐рдЪ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ | , && , рдФрд░ || рдХреЛ рдореВрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИрдВ:

wsl --% ls $foo `&`& echo $PWD
--% wsl ls $foo && echo $PWD

WSL рдХреЗ рднреАрддрд░ рд╢реЗрд▓ рджреНрд╡рд╛рд░рд╛ $foo рдФрд░ $PWD рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдкрдХреЛ PowerShell рдХреЗ рднреАрддрд░ WSL рдХреЗ рдмрдЬрд╛рдп && рдмрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛ред

PowerShell рдореЗрдВ рдРрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

$out = --% ls *.txt
$out | select-string hello

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди & рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдк рдХрд┐рд╕реА рднреА PowerShell рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЗрд╕рд▓рд┐рдП:

--% $commandline

PowerShell рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ $commandline рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдореЗрдВ $commandline рдкрд╛рд╕ рдХрд░реЗрдВред

--% рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдкреЗрд╕реНрдЯ рдХрд░рдХреЗ рдХрдЯ рдФрд░ рдкреЗрд╕реНрдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

Wsl рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

--% wsl ls | less

рдЬрд╣рд╛рдВ рдЖрд╢рдп рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реА рд▓рд╛рдЗрди рдбрдмреНрд▓реНрдпреВрдПрд╕рдПрд▓ рд▓рд┐рдирдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рднреАрддрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИред

рдЦреЛрдЬреЗ рдЬрд╛рдиреЗ

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрд╡рд┐рдЪ рдХреЗ рд░реВрдк рдореЗрдВ --% рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, --% рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ рддрд╛рдХрд┐ рдЦреЛрдЬ рдЗрдВрдЬрди рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ PowerShell рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рдПрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдЪрд╛рд░

&! рдФрд░ &n рдХреЛ рд╕рд░реНрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреАрдЫреЗ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ &! рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рд╡реИрдз рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЦреЛрдЬ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдЪрд┐рдВрддрд╛ рдпрд╣ рднреА рдереА рдХрд┐ рдХреНрдпрд╛ & рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рджреГрд╢реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рд╛рдордХ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЗрди-рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдСрдкрд░реЗрдЯрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдЬрд╛рдп рдПрдХ cmdlet рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ "рдХрдЯ рдПрдВрдб рдкреЗрд╕реНрдЯ" рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдФрд░ / рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Invoke-NativeCommand cm

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

рдпрд╣ рднреА рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

https://github.com/PowerShell/PowerShell/issues/12491
https://github.com/PowerShell/PowerSHell/issues/1761

Committee-Reviewed Issue-Discussion Issue-Enhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, Native , ( Install-Module Native -Scope CurrentUser ) рдЬреЛ рдореИрдВ рдЖрдк рд╕рднреА рдХреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЬрд┐рдирдХреА рдЖрдЬреНрдЮрд╛ рдореИрдВ рдиреАрдЪреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ; рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдКрдкрд░ рд╣реИрдВ ред

рдпрджрд┐ рд╣рдо рдХрднреА рднреА рд╡реИрдЪрд╛рд░рд┐рдХ рдХреЛрд╣рд░реЗ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдлреНрд░реЗрдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
_N рдХреА рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ_ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рджреЗрд╢реА-рд╢реЗрд▓ рдХреЙрд▓]:

рдЖрдк рдПрдХ _indirect рдХрдорд╛рдВрдб_ (рдХреЗрд╕ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдпрд╛ рдкреВрд░реЗ _multi- рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди_ (рдХреЗрд╕ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рджреЗрд╢реА рд╢реЗрд▓_ (рдЗрд╕ рдореБрджреНрджреЗ) рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:

  • рдЪреВрдВрдХрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдХрдорд╛рдВрдб (рд▓рд╛рдЗрди) рдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдХреЛ рд▓рдХреНрд╖реНрдп рд╢реЗрд▓ рдореЗрдВ, _it_ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; PowerShell рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк, рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЙрдкрдпреЛрдЧ рдХреЗрд╕ 2a) рдореЗрдВ PowerShell рдорд╛рди рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • ins ( Invoke-NativeShell ) рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
# Use case 1: Single executable call with line continuation, on Unix.
@'
tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz \
    --exclude=/proc \
    --exclude=/lost+found 
'@ | ins

# Use case 2: Entire Bash command line (also with line continuation)
@'
ps -o pid,args | awk \
  '/pwsh/ { print $1 }'
'@ | ins

# Use case 2a: Entire Bash command line (also with line continuation) with string interpolation.
# Note the double-quoted here-string and the need to escape the $ that is for Bash as `$
$fields = 'pid,args'
@"
ps -o $fields | awk \
  '/pwsh/ { print `$1 }'
"@ | ins

# Alternative to use case 2a: pass the PowerShell value *as a pass-through argument*,
# which allows passing the script verbatim.
# Bash sees the pass-through arguments as $1, ... (note that the `awk` $1 is unrelated).
@'
ps -o $1 | awk \
  '/pwsh/ { print $1 }'
'@ | ins - 'pid,args'

рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЗрди-рд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ - # 13204 рджреЗрдЦреЗрдВ), рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _have_ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рд╢рдмреНрджрд╢рдГ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк '...' рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ _doubling_ рдПрдореНрдмреЗрдбреЗрдб ' , рдпрджрд┐ рдореМрдЬреВрдж рд╣реЛред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдБ "StackOverflow рдСрдкрд░реЗрдЯрд░" рдХреЗ рд▓рд┐рдП рдПрдХ

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ $PROFILE рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд PSReadLine рдХреБрдВрдЬреА рдХрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк Alt-v рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдмреНрджрд╢рдГ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде ins рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд╛рда рдЪрд┐рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдХреЙрд▓ рджрд░реНрдЬ рдХрд░реЗрдВред

# Scaffolds an ins (Invoke-NativeShell) call with a verbatim here-string
# and pastes the text on the clipboard into the here-string.
Set-PSReadLineKeyHandler 'alt+v' -ScriptBlock {
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert("@'`n`n'@ | ins ")
  foreach ($i in 1..10) { [Microsoft.PowerShell.PSConsoleReadLine]::BackwardChar() }
  # Comment the following statement out if you don't want to paste from the clipboard.
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert((Get-Clipboard))
}

рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓]:

рдЖрдк _PowerShell_ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _ind рдмрд╛рд╣рд░реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде _single рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп_ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдХреЗрд╕ 1 рдП рдФрд░ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред

  • рдпрд╣ рдХрд┐рд╕реА рднреА рдЦреЛрд▓ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдЬрдирд╛рджреЗрд╢ рд╣реИ, рдФрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдордЬрдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░реЗред

    • рдЖрдкрдХреЛ PowerShell рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░реНрдХ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ _its_ parsing _as-is_ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рдХреНрд╖реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ - # 1995 рджреЗрдЦреЗрдВ ред
  • рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ _PowerShell рдХреЗ_ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ _its_ рддрд░реНрдХ-рд╡рд┐рдзрд╛ рдореЗрдЯрд╛рдЪреИрдХрд░реНрд╕ рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред

    • рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ ` рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд▓рд╛рдпрди рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рд▓рд╛рдЗрди рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛рдЪреИрдЯрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╢рдмреНрджрд╢рдГ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрджреНрдзреГрдд / рднрд╛рдЧрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдпреЗ рд╣реИрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ @ рдХреЗрд╡рд▓ рддрд░реНрдХ рдХреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред)

      • POSIX- рдЬреИрд╕реЗ рдЧреЛрд▓реЗ (рдЬреИрд╕реЗ, рдмреИрд╢): @ { } ` (рдФрд░ $ , рдЕрдЧрд░ рдЖрдк PowerShell рджреНрд╡рд╛рд░рд╛ рдЕрдк-рдлреНрд░рдВрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)
      • cmd.exe : ( ) @ { } # `
      • рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ` рдРрд╕реЗ рдЪрд╛рд░реНрдЯ рд╕реЗ рдмрдЪ рд░рд╣реЗ рд╣реИрдВред рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдЬреИрд╕реЗ, printf %s `@list.txt )ред

рдЬрдм рд╣рдо # 1995 рдХреЗ рдареАрдХ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, ie ( i nvoke (external) e xecutable) рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░ рдХреЛ рднрд░рддрд╛ рд╣реИ, рдмрд╕ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; рдЬреИрд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓ рдХреЗ рдмрдЬрд╛рдп:

# This command is currently broken, because the '{ "name": "foo" }' argument isn't properly passed.
curl.exe -u jdoe  'https://api.github.com/user/repos' -d '{ "name": "foo" }'

рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

# OK, thanks to `ie`
ie curl.exe -u jdoe  'https://api.github.com/user/repos' -d '{ "name": "foo" }'

Native рдореЙрдбреНрдпреВрд▓ echoArgs.exe рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, dbea ( Debug-ExecutableArguments ) рдХрдорд╛рдВрдб; рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ:

# Note the missing first argument, the missing " chars., and the erroneous argument boundaries.
PS> dbea '' 'a&b' '3" of snow' 'Nat "King" Cole' 'c:\temp 1\' 'a \" b'
7 argument(s) received (enclosed in <...> for delineation):

  <a&b>
  <3 of snow Nat>
  <King>
  <Cole c:\temp>
  <1\ a>
  <">
  <b>

Command line (helper executable omitted):

  a&b 3" of snow "Nat "King" Cole" "c:\temp 1\\" "a \" b"

-UseIe ( -ie ) рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк dbea рдХреЛ ie рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:

# OK, thanks to -UseIe
PS> dbea -UseIe '' 'a&b' '3" of snow' 'Nat "King" Cole' 'c:\temp 1\' 'a \" b'
6 argument(s) received (enclosed in <...> for delineation):

  <>
  <a&b>
  <3" of snow>
  <Nat "King" Cole>
  <c:\temp 1\>
  <a \" b>

Command line (helper executable omitted):

  "" a&b "3\" of snow" "Nat \"King\" Cole" "c:\temp 1\\" "a \\\" b"

рдиреЛрдЯ: рдПрдХ рдмрд╛рд░ # 1995 рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, ie рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЖрдЧреЗ рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд╣рд┐рдд рдореЗрдВ, ie рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдлрд┐рдХреНрд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, ie рдЕрдкрдиреЗ рд╡рд░реНрдХрдЕрд░реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ / & рдХреЙрд▓ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред

рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рдкреНрд░рддреНрдпрдХреНрд╖ рджреБрд╖реНрдЯ рд╡рд┐рдВрдбреЛрдЬ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓]:

рджреЛ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ _Windows рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:

  • рдЖрдк рдПрдХ "рджреБрд╖реНрдЯ" рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, msiexec.exe рдФрд░ msdeploy.exe рд▓рд┐рдП prop="<value with spaces>" msdeploy.exe рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдХреЗрд╡рд▓ _value_ рднрд╛рдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ - рднрд▓реЗ рд╣реА "prop=<value with spaces>" - рд╕рдВрдкреВрд░реНрдг рдХрд╛ рдЙрджреНрдзрд░рдг рд╣реЛред рддрд░реНрдХ - _should_ рд╕рдорддреБрд▓реНрдп рд╣реЛрдирд╛ (рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╡рд╣реА рд╣реИ рдЬреЛ PowerShell - рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд░рддрд╛ рд╣реИ)ред

  • рдЖрдк _a рдмреИрдЪ рдлрд╝рд╛рдЗрд▓_ рдХреЛ _an рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ cmd.exe metacharacters_ рдЬреИрд╕реЗ & , ^ , рдпрд╛ | ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

    • .\someBatchFile.cmd 'http://example.org/a&b'
    • PowerShell - justifiably - рдкрд╛рд╕ http://example.org/a&b _unquoted_ (рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдПрдореНрдмреЗрдбреЗрдб рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдмреИрдЪ-рдлрд╝рд╛рдЗрд▓ рдЗрдирд╡реЛрдХреЗрд╢рди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ cmd.exe - рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ - рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рддрд░реНрдХ рдПрдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд╣реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╢рд╛рд╕рди рдЬреЛ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп cmd.exe рдЕрдВрджрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред

    • рдиреЛрдЯ: рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП _directly_ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрднрд╡рдд: рдХрдо рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрдиреНрд╣реЗрдВ _CLI рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдмрд╣реБрдд рдЖрдо рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Azure рдХреЗ az CLI, рдЬреЛ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ " az.cmd рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдиреЛрдЯ: ie рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ msiexec.exe рдФрд░ msdeploy.exe рд▓рд┐рдП рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП _AST_ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ; рд╣рд╛рд▓рд╛рдБрдХрд┐, _all_ "рджреБрд╖реНрдЯ" рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ cmd.exe , рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рддрд░реНрдХреЛрдВ рдХреА рдЕрдкрдиреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, _does_ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрджреНрдзрд░рдг рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдкрд░ ins рдХреЙрд▓ рдХреЛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВ:

    • ins '.\someBatchFile.cmd "http://example.org/a&b"'
    • рдпрджрд┐ рдЖрдк _expandable_ string рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ PowerShell рдорд╛рди рдХреЛ рдХрдорд╛рдВрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

      • $url = 'http://example.org/a&b'; ins ".\someBatchFile.cmd `"$url`""

  • рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд░реНрддрдорд╛рди --% рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ:

    • .\someBatchFile.cmd --% "http://example.org/a&b"'
    • рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреИрд╕реЗ --% рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, PowerShell рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЕрдЬреАрдм рд░реВрдк рд╕реЗ - рдПрдХ _aux рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░_ рдФрд░ рдЗрд╕реЗ %...% рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВ:

      • $env:url = 'http://example.org/a&b'; .\someBatchFile.cmd --% "%url%"


рдЧрд▓рддреА рд╕рдВрднрд╛рд▓рдирд╛

рд▓рдВрдмрд┐рдд https://github.com/PowerShell/PowerShell-RFC/pull/88 рдмрд╛рд╣рд░реА (рдореВрд▓) рдирд┐рд╖реНрдкрд╛рджрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐-рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдПрдХреАрдХрд░рдг рд▓рд╛рдПрдЧрд╛ред

рдЗрд╕ рдмреАрдЪ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд╕рдорд╛рдкреНрддрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдиреЙрдирдЬрд╝реЗрд░реЛ рдПрдЧреНрдЬрд┐рдЯ рдХреЛрдб рдХреЗ рдЗрд▓рд╛рдЬ рдХреЗ рд▓рд┐рдП Native рдореЙрдбреНрдпреВрд▓ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдПрдб-рд╣реЙрдХ рдСрдкреНрдЯ-рдЗрди рдХреЗ рд▓рд┐рдП :

  • ins -e / -ErrorOnFailure рд╕реНрд╡рд┐рдЪ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдпрджрд┐ $LASTEXITCODE рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдиреЙрдирдЬрд╝рд░реЛ рд╣реИред

  • iee рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╕рдорд╛рд░реЛрд╣ рд╣реИ ie рдХрд┐ рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рддреЛ $LASTEXITCODE рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдЕрд╢реВрдиреНрдп рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред
рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдЯрд┐рдкреНрдкрдгреА-рдЖрдзрд╛рд░рд┐рдд рд╕рд╣рд╛рдпрддрд╛ рдЙрдиреНрд╣реЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд░рддреА рд╣реИред

рд╕рднреА 189 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ (рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдбреАрдПрд╕рдПрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ) рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ PS рдореЗрдВ cmd.exe рд╕рдВрдЧрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ cmd.exe рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдмреЗрдЯрд┐рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рд╢рд╛рдпрдж

&n -command $string

рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рджреЗрдЧрд╛:

&n -shell /bin/sh -command $string
рдпрд╛
&n -shell cmd.exe -command $string

рдирд╛рдо / рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, "&" рд╣реИ! рдЙрдкрдпреЛрдЧ рдореЗрдВ? рд╢рдмрдВрдЧ рдореЗрдВ рд╕рдорд╛рдирддрд╛ рд╣реИ ("#!")ред

$! рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ!

рд╢реЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

&! /bin/sh -c blah

$var рд╡рд┐рд╕реНрддрд╛рд░ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ $ рдореВрд▓ рдХрдорд╛рдВрдб / рд╢реЗрд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдмреНрджрд┐рдХ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрдирд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЪрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$mycommand = "/bin/sh ls"
Invoke-Expression "&! $mycommand"

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдорд┐рдХреНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рд╡рд░реНрддрдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣реЗрдВ рдХрд┐ рдореБрдЭреЗ рдЙрд╕ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рднрд╛рдЧрдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

$mycommand = "/bin/sh ls"
Invoke-Expression "&! $mycommand"

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕рд┐рд░реНрдл iex рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред :-)

@essentialexch рдХреБрдЫ рд╕рдордп рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ :)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ $mycommand рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдареАрдХ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ!

рдмрдврд╝рд┐рдпрд╛ рд░рд╛рдЗрдЯрдЕрдк рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдореИрдВ рдЦреБрдж --% рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕реЗ рджреЗрдЦрдХрд░ рдХрднреА рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд &n рдСрдкрд░реЗрдЯрд░ рд╕рдорд╛рди рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рддреАрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рд╕реА рдкреНрд░рд┐рдВрдЯрдл рдмрдпрд╛рдиреЛрдВ рдореЗрдВ% f рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ)ред рдЪреВрдБрдХрд┐ рдпрд╣ рд╡реИрд╕реЗ рднреА рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ && рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЖрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ (рдпрд╛ рдбрдмрд▓ рдмреНрд░реЗрд╕реЗрд╕?) рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг: & [ wsl ls ] | less

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ &! рдЕрдиреНрдп рдЧреЛрд▓реЗ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣рдЬ рддрд░реАрдХрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрдкрд░-рдбреБрдкрд░-рд▓рд┐рдВрдЯрд░ рдореЗрдВ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░рдгреА рдмрдирд╛рдХрд░ рджреЗрд╢реА рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВред

$command = 'linter'
$myargs = @(
    '-config'
    'linterconfig.path'
)
if ($Test) {$myargs += 'test'}
& $command <strong i="7">@myargs</strong>

рддреЛ рдпрд╣ рд╕рд╢рд░реНрдд рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ

@bergmeister рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ && рд░реВрдк рдореЗрдВ рд╕реЛрдЪрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ & рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдЬ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, && рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рднреНрд░рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ &! рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВред

@JustinGrote , рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред &! рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдмрд╕ рдХрд╛рдЯрдирд╛ рдФрд░ рдЪрд┐рдкрдХрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдФрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдареАрдХ рд╕реЗ рдмрдЪрдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ

рдУрд╣ рдпрд╛рд░, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ рдмреНрд░реВрд╕ рдФрд░ рдЬреЗрд╕рди рдХреЗ рд╕рд╛рде рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдереАред рдореЗрд░реА рдЖрдВрдд рдХреА рднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ --% рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд┐рддрдирд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛ рджрд╛рдВрд╡ рдкрд░ рд▓рдЧрд╛рдКрдВрдЧрд╛ред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ:

# run ls in wsl, return results to powershell, then pipe to wsl again, to grep.
& wsl ls | wsl grep -i "foo"  

#  the entire pipeline right of wsl will run in wsl. 
& --% wsl ls | grep -i "foo"

рдХрд┐рд╕реА рдиреЗ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрд┐рдпрд╛? рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ --% рдХрд╣реАрдВ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрдд рд╣реИ "рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдЪрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред"

@ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдЖрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЙрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ?
image

рдпрд╣ рдереЛрдерд╛ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ:
function Invoke-LiteralCommand ($command) {Invoke-Expression "& $command --% $args"}

Invoke-LiteralCommand ping -W 200 www.google.com | grep icmp

@JustinGrote рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ :) рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ &n _ &! рдпрд╛ рдЬреЛ рднреА рдмрд╛рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: & рдХреЙрд▓ рд╣реИ рдФрд░ --% рдХреЛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рджрдмрд╛ рд░рд╣рд╛ рд╣реИ; рд╕рд╛рде рдореЗрдВ рд╡реЗ рдХреБрдЫ рдирдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рдФрд░ рдЕрдзрд┐рдХ рдЦреЛрдЬ рдпреЛрдЧреНрдп рд╣реИрдВред рдореБрдЭреЗ "рдХреЙрд▓" рдФрд░ "рдХреЙрд▓ рдореВрд▓" рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред

@oising рдореИрдВ рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ "рдирдИ рд╢рдХреНрддрд┐рдпрд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдмреИрд╢ рдЬрд╛рдирддрд╛ рд╣реИ" рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ред

@oising рдореИрдВ рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ "рдирдИ рд╢рдХреНрддрд┐рдпрд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдмреИрд╢ рдЬрд╛рдирддрд╛ рд╣реИ" рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ред

рд╣рд░реНрдЧрд┐рдЬ рдирд╣реАрдВред рдпрд╣ PowerShell рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ PowerShell / cmd.exe / bash рдХреЗ рдмреАрдЪ рдХреЗ рдЬрдЯрд┐рд▓ рдЙрджреНрдзрд░рдг рдирд┐рдпрдореЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╢реАрд░реНрд╖рдХ рд╢реАрд░реНрд╖рдХ "рджреЗрд╢реА рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ", рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

@oising рдореИрдВ рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ "рдирдИ рд╢рдХреНрддрд┐рдпрд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдмреИрд╢ рдЬрд╛рдирддрд╛ рд╣реИ" рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ред

рд╣рд░реНрдЧрд┐рдЬ рдирд╣реАрдВред рдпрд╣ PowerShell рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ PowerShell / cmd.exe / bash рдХреЗ рдмреАрдЪ рдХреЗ рдЬрдЯрд┐рд▓ рдЙрджреНрдзрд░рдг рдирд┐рдпрдореЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╢реАрд░реНрд╖рдХ рд╢реАрд░реНрд╖рдХ "рджреЗрд╢реА рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ", рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕рдЪ рд╣реИ, рдпрд╛ рд╣рдо рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред

рд╣рд╛рдБ рдореИрдВ @oising рдХреЗ рд╕рд╛рде рд╣реВрдБред рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдирдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╣рдо рдкреБрд░рд╛рдиреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ / рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЖрд╡рд╛рдЬ рджреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдХреНрд╖реНрдп рдЬрдирд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╡рдЬрди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП _already_ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХреА рдХрдореА рд╣реИ рдЬрдм рд╡реЗ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╣реИ) рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИ, рдФрд░ рдмреА) рдореМрдЬреВрджрд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рддрд╛ рд╣реИ c) рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдкрд┐рдЫрд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬрдмрдХрд┐ _another_ рдСрдкрд░реЗрдЯрд░ рдЬреЛ рдЕрднреА рдкреНрд░рд▓реЗрдЦрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ / рдпрд╛ рд╕реБрдЭрд╛рд╡ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рддреАрд╕рд░рд╛ рдЪрд╛рд╣рд┐рдП? рдЪреМрдереЗ? рдкрд╛рдВрдЪрд╡реЗрдВ? (рдореИрдВрдиреЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореМрдЬреВрджрд╛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ _improve_ рдЙрдиреНрд╣реЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдмрд╡реЗрдм рдХреА рддрд░рд╣ рдЙрдиреНрд╣реЗрдВ рдкреАрдЫреЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╡реЗ рдЙрдиреНрд╣реЗрдВ рдЦреЛрджрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рдореИрдВ рддрдм рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ 5 рддрд░реАрдХреЗ рд╣реИрдВ "рдХреНрдпреЛрдВ 2-3 рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╕рдЪрдореБрдЪ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ", рдФрд░ рдореЗрд░рд╛ рдЬрд╡рд╛рдм рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдпрд╣ рд╣реИ - - PS рдЯреАрдо _way_ рд╣реИ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдПрдХ рджрд╢рдХ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ ++ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ / рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рд▓реЗрдХрд┐рди рдЕрдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрд╢реЛрдзрди рдФрд░ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рдХрд░ рдкреВрд▓ рдХреЛ рдФрд░ рдореИрд▓рд╛ рдХрд░рдирд╛ рд╣реИред

рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рд╕реЗ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдИрдПрдордУред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдпреВрдирд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдирдХреАрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЦрд┐рд░реА рдмрд╛рдд рдЬреЛ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рд╡рд╣ рднреНрд░рдо рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЕрдкрдиреА рдкреВрд░реНрдгрддрд╛ рдореЗрдВред

рдореИрдВ 3 рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛:

  1. рдкреВрд░реНрдг рд╡рд┐рд╕реНрддрд╛рд░ - рд╡рд░реНрддрдорд╛рди рдкрд╛рд╡рд░рд╢реЗрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ред
  2. рдкреВрд░реНрдг рд╢рд╛рдмреНрджрд┐рдХ - рдХрд┐ рдУрдкреА рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред
  3. рдЖрдВрд╢рд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ - wsl ls $path рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХрд╣рд╛рдБ @ mklement0 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ? :-)

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд╢реБрд░реВ рдореЗрдВ; рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░! рд▓реЗрдХрд┐рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдореБрдЭреЗ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ред рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ & рдХрдорд╛рдВрдб рдХреЛ 'PS рдорд╛рдирдХреЛрдВ рдХреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ' рдкрд╛рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдореБрдЭреЗ 'PERL days' (ugh) рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред рдПрдХ рдФрд░ рдЧреИрд░-рдорд╛рдирдХ PS рдХрдорд╛рдВрдб (рд╕рдВрдЬреНрдЮрд╛-рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛) рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред рдкреБрдирд╢реНрдЪред

рдореИрдВ -% рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ред рдореИрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ @JustinGrote рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдкреАрдПрд╕ рд╢реЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛рдЯрдирд╛ / рдЪрд┐рдкрдХрд╛рдирд╛ рдХрднреА рднреА рдореЗрд░реА рдореБрдЦреНрдп 'рдЪреАрдЬ' рдирд╣реАрдВ рд░рд╣рд╛ред
рдХреНрдпрд╛ рд╣рдо рдЙрди рджреЗрд╢реА рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ?
Cmd.exe рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдмрдирд╛рдПрдВ ...

рдореИрдВ рдореМрдЬреВрджрд╛ рдХрдорд╛рдВрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ -% рдФрд░ рдЙрдкрдпреЛрдЧ рдкрд░ рдХреБрдЫ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реБрдзрд╛рд░

@iSazonov рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ 'рдХрдЯ рдкреЗрд╕реНрдЯ' рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рдЖрдВрд╢рд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рджреЗрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ (рдЪреАрдЬреЛрдВ рдХреЗ рдПрдПрд╕рдЯреА рдкрдХреНрд╖ рдкрд░)

"#!" рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдФрд░ рдлрд┐рд░ "!#"ред "рдФрд░!"

рд╣рдо рд╢рд╛рдпрдж рдЯреЛрдХрди рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

Iex -l
рдпрд╛ рдЗрдирд╡реЛрдХ-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди-рд▓рд┐рдЯрд░рд▓ рдЬреЛ рдЧреБрдЬрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрддрд░ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рдЕрджреНрд╡рд┐рддреАрдп рдЯреЛрдХрди рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдореЗрдВ рдмрд╛рдзрд╛ рдЖрддреА рд╣реИ рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреНрд╖рдорддрд╛ рдиреАрдЪреЗ рдЬрд╛рддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Get-Help рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ_рдСрдкрд░реЗрдЯрд░реЛрдВ рдореЗрдВ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, call_operator рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдЕрдиреВрдареЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
& modulename {рдХрдорд╛рдВрдб}
рдЖрдкрдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреБрдЫ рдФрд░ рднреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдЦреЛрдЬ рдЗрддрдиреА рдХрдо рд╣реИ рдХрд┐ рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рднреАрддрд░ рдЗрд╕реЗ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕рдореБрджрд╛рдп рдЗрд╕реЗ рдХреЗрд╡рд▓ JSnover рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рдд рдЙрд╕рдиреЗ рд╣рдореЗрдВ рд╢рд╛рдВрдд рдЪреАрдЬреЗрдВ рджрд┐рдЦрд╛ рджреАред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЬреЛ рдХреБрдЫ рднреА рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ "рдлреАрдЪрд░" рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреИрд╕рд╛ рд╣реИ, рдФрд░ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Powershell 5 рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдирдП рдХреЗ рдмрд┐рдирд╛ pwsh рдХреЛрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рддреЛ рдЦреЛрдЬ рдмрд╣реБрдд рдХрдо рд╣реИред

рдореБрдЭреЗ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди PowerShell рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореМрд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреАред рд╣рдо рд╕рдВрднрд╡рддрдГ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреАрдПрд╕ 6 рдЬреАрдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реАрдзреЗ рддреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рддрдм рднреА рдпрд╣ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрднреАрд░ рдЦрддрд░рд╛ рд╣реЛрдЧрд╛ (рдкрд╛рдпрдерди рдХреЗ print() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ)ред

рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджрд▓реАрд▓реЗрдВ рджреЗрдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрд╣реНрд╡рд╛рди рдФрд░ Start-Process рдордВрдЧрд▓рд╛рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдУрд╡рд░рд╣рд╛рд▓ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЬреЛрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реА рднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рд╕рдорд░реНрдерди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Cmdline arg рдкрд╛рд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдирд╡реЛрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

  • рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░, рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд рдмрди рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ CommandLineToArgvW рдЕрдзреАрди рд╣реИ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░, рдЬрд┐рд╕реЗ рдЙрдирдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореВрд▓реНрдп рд╕реЗ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдирдВрдЧреЗ рдЯреЛрдХрди рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ > рдФрд░ | рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд╛рдВрдб рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реЛрдВред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдореВрд▓реНрдп рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдЬреЛ Write-Host $val рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд╢рдмреНрджрд╢рдГ рд╡реНрдпрд╡рд╣рд╛рд░, рдЬрд╣рд╛рдБ рд╕рднреА рдЯреЛрдХрди рдХреЛ рдирдВрдЧреЗ рддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рднрд╛рдЧрдиреЗ рдХреЗ рдЯреЛрдХрди рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдЬ --% рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрдВрдд рдЯреЛрдХрди рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ --% ... %-- рддрд░рд╣ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдмреИрд╢ рд░реАрдбрд▓рд╛рдЗрди рд╡реНрдпрд╡рд╣рд╛рд░, рдЬрд╣рд╛рдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ, рд╢-рдЙрдиреНрдореБрдЦ рдПрд╕реНрдХреЗрдкрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд░рд▓ рд╕рдВрдЧрддрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реИрдк рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд░рдгрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ &! рдФрд░ &# рдпрд╛ рд╢рд╛рдпрдж +% ... -% рдпрд╛ рдХреБрдЫ рдЬреИрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрдВрдзрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд░реНрдмреЗрдЯрд┐рдо рдореЛрдб рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рднрд╛рдЧрдиреЗ рдХреЗ рдЯреЛрдХрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЕрдзрд┐рдХ рдЯреЛрдХрди рд╡рд░реНрдмреЗрдЯрд┐рдо рд▓реЗ рдЬрд╛рдПред рдПрдХ рд╣реЗрд░реЗрдбреЛрдХ рдХреЗ рд╕рдорд╛рдиред

рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреИрд╕реЗ "рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рдж рдХреЛрдИ рднреА рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдУрдПрд╕ рдХреЗ" рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ "рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдЧреАред" shell рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд╣реЗрдВрдЧреЗ?
`` `Powerhell
PS> рд╢реЗрд▓ wsl ls | рдХрдо рд╕реЗ
PS> (рд╢реЗрд▓ wsl ls * .txt) | рд╕рд▓реЗрдХреНрдЯ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрд▓реЛ

рдпрд╣ рдлреЛрд░реНрде / рдПрдкреАрдПрд▓ рд╢реИрд▓реА рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯрд┐рдХ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЦреЛрдЬ рдпреЛрдЧреНрдп рдФрд░ рдкрдардиреАрдп рд╣реИред

рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ # 1995 рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛: https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -653174261 рджреЗрдЦреЗрдВ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, WSL рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ wsl.exe (рджреЗрдЦреЗрдВ https://github.com/PowerShell/PowerShell/issues/12975#issuecomment-650353021) рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
(рдареАрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ # 1995 рд╣реИ)

рдУрд╣, рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд▓рдЧрднрдЧ https://github.com/PowerShell/PowerShell/issues/12975 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдЬреЛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ:

@bitcrazed
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрдорд╛рдВрдб / рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдкрд░рд┐рд╕реАрдорди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рд░ рд╕рдордп рдпрд╛рддреНрд░рд╛ рдХрд░рддреА рд╣реИред
"рд╡рд░реНрдмреЗрдЯрд┐рдо рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ 1. рд╡рд░реНрдгреЛрдВ рдХреЗ рдХреБрдЫ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╢рдмреНрджрд╢рдГ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХ рд╕рд░рдгреА рдХреЗ рдПрдХ рддрддреНрд╡ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдпрд╣ рдХреНрд░рдо рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЛ `argv [1]` рдореЗрдВ [рдореБрдЦреНрдп рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ] (https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=vs-2019#command-line-arguments)) рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ 2. рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╡рд░реНрдгреЛрдВ рдХреЗ рдХреБрдЫ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ 'рдХреНрд░рд┐рдПрдЯрдкреНрд░реЛрд╕реЗрд╕рд░' рдХреЗ [`lpCommandLine 'рдкреИрд░рд╛рдореАрдЯрд░ (https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi-nf-processthreadsapi-createprocessw#parameters) рдкрд░ рд╢рдмреНрджрд╢рдГ рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред - рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм (1.) рд╣реИ, рддреЛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
PS /home/User> /bin/echo 'cd / && ls . | cowsay'
cd / && ls . | cowsay
PS /home/User>
(Https://github.com/PowerShell/PowerShell/issues/1995 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдПрдореНрдмреЗрдб рдХрд┐рдП рдЧрдП рдЙрджреНрдзрд░рдгреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЛрдИ рдпрд╣ рддрд░реНрдХ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ-рдкрдВрдХреНрддрд┐-рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреБрдЫ usecases рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЖрдк рдХрд╛ рдорддрд▓рдм рд╣реИ (2.) --- рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ (2.), рддреЛ рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рдирд╛рдЯрдХреАрдп рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреА рд░рд╛рдп рдмрддрд╛рдПрдВ: рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛ рди рдЬреЛрдбрд╝реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╣реИ - `%` рдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕реЗ рдХрднреА рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЗрддрдиреА рджреГрдврд╝рддрд╛ рд╕реЗ рдХреНрдпреЛрдВ рд╣реВрдБ? 1. рдпрд╣ рдПрдХ Windows рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ Windows рдкрд░ рд╢рдХреНрддрд┐рдпрд╛рдВ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред (рдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд░реНрде рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ `-%` рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рд╣реИ) 2. рдпрджрд┐ Microsoft рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдореБрдЦреНрдп рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╢реЗрд▓ рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╕реБрд╡рд┐рдзрд╛ (рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдПрдХ cmdlet) рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп [рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ] рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view) -2019 # рдкрд╛рд░реНрд╕рд┐рдВрдЧ-рд╕реА-рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди-рджрд▓реАрд▓реЗрдВ) (рдпрджрд┐ рдЙрдкрдХрд░рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (2.), рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ (1.) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдкрдХрд░рдг, рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХреЗрд╡рд▓ ["рд╡рд┐рдВрдбреЛрдЬ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЕрд░рд╛рдЬрдХрддрд╛" рдмрд┐рдЧрдбрд╝рддреА рд╣реИ] (https://stackoverflow.com/a/4094897/2770331)ред рдХрдо рд▓реЛрдЧ рдареЗрда рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдХрдард┐рди рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рд╣реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдЖрдорддреМрд░ рдкрд░ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ, рдЙрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред 3. рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ, рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ> рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ WSL рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ wt рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЗрдирд╡реЛрдХреЗрд╢рди, рдФрд░ рдХрдИ рдЕрдиреНрдп рдЯреВрд▓ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ WSL рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдБрдЧрд╛ рдХрд┐ WSL рдХреЗ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдХрд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмрд╕ [рдЯреВрдЯрд╛ рд╣реБрдЖ] рд╣реИ (https://github.com/Microsoft/WSL/issues/1746) (рд╕рдорд╕реНрдпрд╛ `bash.exe` рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереА, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ `wsl.exe`) рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ - рдореИрдВ рд╣рд░ рдЙрдкрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ [рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ] рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (https://docs.microsoft.com/en-us/ cpp / cpp / main-function-command-line-args? view = vs-2019 # рдкрд╛рд░реНрд╕рд┐рдВрдЧ-рд╕реА-рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди-рджрд▓реАрд▓реЗрдВ) рдЯреВрдЯреА рд╣реБрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди WSL рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ IMHO рднреА рдареАрдХ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ ... рдореИрдВрдиреЗ рдХрд╣рд╛ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" "рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛` wsl.exe` рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рджреЗрдЦрд╛, рдХрд┐ `wsl.exe` рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ` -`` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ:
PS C:\> wsl -e bash -c 'cd / && ls . | cowsay'
 _______________________________________
/ acct bin boot cache cygdrive data dev \
| etc home init lib lib64 lost+found    |
| media mnt opt proc root run sbin snap |
\ srv sys tmp usr var                   /
 ---------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
PS C:\>
рддреЛ рдЗрд╕ рд╕реНрдкрд╖реНрдЯ usecase рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЧрд╛рдпрдм рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп exe рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `wsl.exe` рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред

"рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрдорд╛рдВрдб / рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рд░реНрдмрд╛рдЯрд┐рдо рдкрд╛рд╕ рдХрд░рдиреЗ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ, рдЬреЛ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╣реЛрдЧреА, рдЗрд╕рдХрд╛ рдЕрд░реНрде рдКрдкрд░ (2) рд╣реЛрдЧрд╛, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЦрд░рд╛рдмред

рдпрджрд┐ рдЖрдк рд╕рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ cmdlet (рдЬреИрд╕реЗ Invoke-Shell рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ linux рдкрд░ bash -c рдФрд░ cmd /c рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдБ?
рддрдм рдЖрдк рдмрд╕ рдХрд░ рд╕рдХрддреЗ рдереЗ

Invoke-Shell @'
whatever existing comandline containg '"quotes"' or whatnot
'@

рдпрджрд┐ рдпрд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдПрдХ-рд▓рд╛рдЗрди-рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рди рдХрд░реЗрдВ, рдЬреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╕рдм рдХреБрдЫ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП # 1995 рдХрд╛ рддреНрдпрд╛рдЧ рди рдХрд░реЗрдВ!

+10 рдЕрдВрдХ рд╢рдмреНрдж "sigil" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

&! рдмрдирд╛рдо shell рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ "рд╢реЗрд▓" рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╢реЗрд▓ рдирд╛рдо рдХрд╛ рдПрдХ рдореМрдЬреВрджрд╛ рдХрдорд╛рдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ "рд╢реЗрд▓" рдирд╛рдо рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ "рдПрди" рдирд╛рдо рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ (рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ &n рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ)ред

@oising : & --% рдЕрдЪреНрдЫрд╛ рд╣реИ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ | рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рджреЗрд╢реА рд╢реЗрд▓ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдРрд╕рд╛ рдХреБрдЫ & --% рдХреЗ рд▓рд┐рдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ foo $blah --% more args , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрдордпрдХрд╛рд░реА рдорд┐рд▓реЗрдЧрд╛ ... рдХреНрдпрд╛ рд╣реБрдЖ рдЕрдЧрд░ рддреБрдордиреЗ рдХрд┐рдпрд╛ рдерд╛ & $foo --% more args | blah ? рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд &! рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдиреЗ рдХрд╛ рд╡рд╛рд░рдВрдЯ рдХрд░рддрд╛ рд╣реИред (рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛: рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди & рдФрд░ --% рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЕрд▓рдЧ рд╣реИред)

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ "рдирдП PowerShell рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдмреИрд╢ рдЬрд╛рдирддрд╛ рд╣реИ" рдФрд░ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рд╕рднреА рдЬрдЯрд┐рд▓ рдЙрджреНрдзрд░рдг / рдирд┐рдпрдореЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ" рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдмрд╕реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд▓рд┐рдП рднреА рд╣реИ, рдЬреЛ рдмрд╕ рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдФрд░ рдмреЗрд▓рд╛ рдХреЗ рдмрд┐рдирд╛ StackOverflow рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣рдж рддрдХ рд╣реЛрддрд╛ рд╣реИ - рдПрдХ рдЙрддреНрдкрд╛рдж рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд▓рд┐рдВрдЧреБрдЖ рдлреНрд░реИрдВрдХрд╛ cmd.exe рдХрдорд╛рдВрдб рд╣реИ - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ% VARIABLE_REERENENCES% рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ ред; &! рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЪрд┐рдкрдХрд╛рдирд╛ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ "рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдСрдкрд░реЗрдЯрд░" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реВрдВрдЧрд╛ред : рдбреА

@ vexx32 : рдпрд╣ "рдЙрди рд╕рднреА рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ" рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░; рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдЙрдкрдХрд░рдгред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЯреВрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рд╣рдереМрдбрд╝рд╛, рдПрдХ рдкреЗрдЪрдХрд╢, рдПрдХ рдбреНрд░рд┐рд▓, рдПрдХ рдкреНрд░рднрд╛рд╡ рдбреНрд░рд┐рд▓, рдФрд░ рдПрдХ рдиреЗрд▓рдЧрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднрд┐рднреВрдд рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡реЗ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдПрдХ рдкреЛрдХреЗ рд╡рд╛рд▓реА рдмрд╛рдд рдХреЛ рдкреЛрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рд╣реИрдВред рдЪреАрдЬреЗрдВ ", рд╡реЗ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдореВрд▓реНрдп рд╣реИрдВ; рд╕рднреА рд╡рд┐рднрд┐рдиреНрди (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд) рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@ рдЯрд┐рдХрдЯ : рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ # 1995 рдЕрд▓рдЧ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ "рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИ" рд╕реЗ рдЕрд╕рд╣рдордд рд╣реИ: StackOverflow рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХреЙрдкреА рдХрд░рдирд╛ рдФрд░ рдХрд┐рд╕реА рднреА рдУрдПрд╕ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рдЬреИрд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рдордВрдЪ рдкрд░ рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реИрдВ - рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд▓рд┐рдирдХреНрд╕ рдкрд░ рдореИрдВ рдПрд╕рдУ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирдХрд▓ рдФрд░ рдЪрд┐рдкрдХрд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред)

рдЪрд╛рд╣реЗ рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ &! рдпрд╛ рдХреБрдЫ Invoke-Shell рдХрдорд╛рдВрдб рд╣реЛ, рдореЗрд░реЗ рдкрд╛рд╕ рджреВрд╕рд░реЛрдВ рдХреА рддрд░рд╣ рдЗрддрдиреА рдордЬрдмреВрдд рднрд╛рд╡рдирд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ ... рдореБрдЭреЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╣реИ рдХрд┐ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЖрджрд┐ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ &! рдХреА рдорд░реНрдпрд╛рджрд╛ рдкрд╕рдВрдж рд╣реИред

@jazzdelightsme рдпрд╣ "рдЯреВрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдЙрдкрдХрд░рдг" рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ "рдПрдХ рдкреЗрдЪрдХрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЗрдЪрдХрд╢ рд▓рдЧрд╛рд╡ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрднрдЧ 3-5 рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _okay_ рд╣реИрдВ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ"ред

@jazzdelightsme "рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗрд╡рд▓" рднрд╛рдЧ рд╢рд╛рдпрдж рдЙрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдХрдерди рдХреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ - рд╣рд╛рдВ рдареАрдХ рд╣реИ, рдпрд╣ рдЙрд╕ рдореБрджреНрджреЗ рдХрд╛ рдПрдХ рд╕рдЯреАрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ # 1995 рдХреЛ рдЫреЛрдбрд╝ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдорд╛рдВрдЧреА рдЧрдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдХ рдХрдорд╛рдВрдбрд▓реЗрдЯ (рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред (рдпрд╛ рд╢рд╛рдпрдж "рдкрдХреНрд╖ рдореЗрдВ рдирд╣реАрдВ" рд▓реЗрдХрд┐рди "рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ")

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░: рдпрджрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реНрдг рдХрдорд╛рдВрдбреНрд╕ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдФрд░ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рджреЗрд╢реА рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП рдереЗ, рддреЛ рд╢рд╛рдпрдж PsReadLine рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдмреИрд╢ рдпрд╛ cmd рд╕реНрдЯрд╛рдЗрд▓ рд╕реЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдЯрд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рд╣реЛрдЧрд╛ред

рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: PsReadLine рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рднреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЧрд▓рдд рд╕рд╛рдордЧреНрд░реА (рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрд╛рдж рдорд╛рдиреНрдп рд╣реЛрдЧреА) рдЪрд┐рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдерд╛ред

@jazzdelightsme рдиреЗ StackOverflow operator , рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рддрдВрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рдЪ рд╣реИ

@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХреА; рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ "рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдСрдкрд░реЗрдЯрд░" рдкрд░ рдкрд╣реБрдВрдЪрд╛ред рдПрдХреНрд╕рдбреА

@jazzdelightsme

... рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ | рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рджреЗрд╢реА рдЦреЛрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ; рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдЬреЛ рдЖрдкрдХреЛ PowerShell рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдПред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╕рдордЭ рд▓рд┐рдпрд╛ рд╣реИ; рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╕реНрдкрд╖реНрдЯрддрдГ рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХреБрдЫ рд░рдгрдиреАрддрд┐рдХ рд░реВрдк рд╕реЗ рдкреВрдВрдЬреАрдЧрдд рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реЛрдиреЗ рджреЗрдВ: рдбреА

# NON-OPTIMAL SOLUTION: run "ls" in wsl, return results to powershell, then pipe to wsl again, to "grep."
& wsl ls | wsl grep -i "foo"  

# NEW SOLUTION: the entire pipeline/string, INCLUDING THE PIPE SYMBOL, right of wsl will be executed in wsl. 
& --% wsl ls | grep -i "foo"

# NEW SOLUTION: the entire pipeline AS ABOVE is sent to WSL, then the results are returned to powershell
# and piped, in powershell, to foreach-object
(& --% wsl ls | grep -i "foo") | % { "match {0}" -f $_ }

# NEW SOLUTION: allow placing --% beyond first argument
# pass everything right of --% to the command in $wsl 
$wsl = gcm wsl
& $wsl --% ls | grep -i "foo"

# or

& wsl --% ls | grep -i "foo"

# NEW SOLUTION: execute multiline pasted code without powershell parsing.
& --% @'
(pasted multiline code)
@'

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ? рдпрджрд┐ рдкрд╛рдЗрдк --% рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдЧреВрдВрдЧрд╛ рдЪрд░рд┐рддреНрд░ рд╣реИ: рдПрдХ рддрд░реНрдХред рдСрдкрд░реЗрдЯрд░ рдкреВрд░реНрд╡рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЬреБрдбрд╝рд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдпрд╛ рд╕рдм-рдбреЗрдкреНрд░рд┐рд╕рд┐рд╢рди рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рддреЛ рдлрд┐рд░ рд╕реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдиреЗ & $ foo -% рдЕрдзрд┐рдХ args | blah?

рдЦреИрд░, рдпрд╣ $foo рдореЗрдВ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдФрд░ "more" , "args" , "|" рдФрд░ "blah" рдЬреЛ рдХреБрдЫ рднреА рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛; $foo рдЪрд╛рд╣рддрд╛ рд╣реИред рдирд┐рдпрдо рдореБрдЭреЗ рдХрд╛рдлреА рд╕рд░рд▓ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреЙрд╡рд░рд╢реЗрд▓ / рдореЛрдирдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рддрд░реНрдХ рдХреА рддрд░рд╣ & & $foo --% ... рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ --% рд░реВрдк рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рд╣рдо рдЗрд╕ рд╕рддрд░реНрдХрддрд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рд╣рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдЪрд╛рд░?

рдореИрдВрдиреЗ --% рдЖрдВрд╢рд┐рдХ рд░реЗрдЦрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди, рдмрд╣реБрд╕реНрддрд░реАрдп рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдХрдИ рд╕рдВрдкрд╛рджрди рдХрд┐рдПред рд╕рднреА рдирдП рд╕рд┐рдЧрд┐рд▓, рдСрдкрд░реЗрдЯрд░реЛрдВ рдпрд╛ рдЕрдЬреАрдм рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ: рдХреНрдпрд╛ рдкрд╛рд░реНрд╕рд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ? рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ @lzybkr @JamesWTruher @BrucePay ?

рд╕реБрди, рд╕реБрди, @TSlivedeред

рдореБрдЭреЗ рдХреБрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрди рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдХреНрдпрд╛ рдпрд╣ рдореБрджреНрджрд╛ рдЬрд╛рджреБрдИ рд╕реЛрдЪ рдХреЗ рд▓рд┐рдП рд░рд╛рд╢рд┐ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИ:
рдпрд╣ рдЕрд╢реБрдн, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд "рд╕реНрдЯреЙрдк-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рд┐рдВрдмрд▓", --% , рдЬреЛ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рд░реВрдк рдореЗрдВ рд╕реАрдорд┐рдд рдЙрдкрдпреЛрдЧ _on Windows_ (рджреЗрдЦреЗрдВ https://github.com/MicrosoftDocs-PowerShell- рдбреЙрдХреНрд╕ / рдореБрджреНрджреЗ / 6149) рдФрд░ _Unix рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/MicrosoftDocs/PowerShell-Docs/issues/4963)ред
--% рдХреЛ рдХрднреА рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рди рд╣реА рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрд╛рджреБрдИ рд╕реЛрдЪ рджреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЙрд▓рдЭрди рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╕рдВрдЧрдо рд╣реИ:

  • (рдП) "рдореИрдВ рдХреБрдЫ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд┐рдХреНрд╖-рдЕрд▓рдЧ рдЯреЛрдХрди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдирдВрдЧреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ, рдмрд┐рдирд╛ рд╢реЗрд▓ рдореЗрдЯрд╛рдЪреИрдХрд░ рдЬреИрд╕реЗ & рдпрд╛ | ред" - https://github.com/PowerShell/PowerShell/issues/12975#issuecomment-646276628 рджреЗрдЦреЗрдВ

    • рдмреЗрд╢рдХ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдмрд╛рдзрд╛рдУрдВ рдкрд░ рд╣реЛрддреА рд╣реИ _ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ _ рдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди-рдЪреЗрдирд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ_ ( && рдФрд░ || ) рдХреЗ рд╕рд╛рде, рдФрд░ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрджреЗрд╢ рд░рдЦрдиреЗ рдХреЗ рд╕рд╛рде рднреАред ; рдмрд╛рдж
  • (рдмреА) "рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЙрд╕ рддрд░реАрдХреЗ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░реЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдЙрд╕ рд╢реЗрд▓ рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╛ рд╢реЗрд▓ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рдереА)", рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, _is_ рд╡рд░реНрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ & рдпрд╛ | рдореЗрдЯрд╛рдЪреИрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП _syntactic_ рдЕрд░реНрде рд╣реИред

    • рдмрд┐рдВрджреБ рдореЗрдВ рдорд╛рдорд▓рд╛: рди рддреЛ cmd рдФрд░ рди рд╣реА /bin/sh (рдпрд╛ рдХрд┐рд╕реА рднреА POSIX- рдЬреИрд╕реЗ рд╢реЗрд▓ рдЬреИрд╕реЗ рдХрд┐ bash ) wsl ls | less рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ ls , | , рдФрд░ less _verbatim_ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ wsl - рд╡реЗ рд╕рднреА _ _quoted_ | _theirir рдФрд░ рдкрд╛рдЗрдк рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред

рдпреЗ рд╡рд┐рдЪрд╛рд░ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рд╣реИрдВ, рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

  • (A) рдХрд╛ рд╕рдорд╛рдзрд╛рди _abandon_ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп _PowerShell рдХрд╛ рд╕реНрд╡рдпрдВ, рдореМрдЬреВрджрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдореЗрдЯрд╛рдЪреИрдХрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ _verbatim_ - рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ _quotat_ рдпрд╛ _esformation_ ,:

    • рдпрд╛ рддреЛ: рдирдВрдЧреЗ рдкрд╛рд╕рд╡рд░реНрдб (рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рдЯреЛрдХрди рдирд╣реАрдВ рд╣реИрдВ) рдЬрд┐рд╕рдореЗрдВ рдореЗрдЯрд╛рдЪреИрдХрд░реНрд╕ рд╣реЛрддреЗ рд╣реИрдВ _as a__: wsl ls '|' less
    • рдпрд╛: ` -рдЪреЗрдХ рдореЗрдЯрд╛рдЪреИрдХрд░реНрд╕ _individually_ рдирдВрдЧреЗ рдкрд╛рд╕рд╡рд░реНрдб рдореЗрдВ: wsl ls `| less
    • рдпрд╛: рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ _array [рдЪрд░] _ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ _verbatim_: $wslArgs = 'ls', '|', 'less'; wsl $wslArgs
    • рдмреЗрд╢рдХ, # 1995 рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐, рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЙрди рддрд░реНрдХреЛрдВ рдХреА рдУрд░ рдЖрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ _embedded_ " _when рдХреЛ рдмрд╛рд╣реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ - - _this рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ__ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ
  • (B) рдХрд╛ рд╣рд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _call рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ use_ рдХрд░рддрд╛ рд╣реВрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди _as рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

    • рдЬреИрд╕рд╛ рдХрд┐ @TSlivede рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рдПрдХ Invoke-Shell cmdlet рдЬрд┐рд╕реЗ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ _ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдФрд░ рдЬрд┐рд╕реЗ _platform- рджреЗрд╢реА рд╢реЗрд▓_ рдХрд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ - рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдмрд┐рд╕рд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ ( '...' рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред @'<newline>...<newline>'@
    • рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдпреВрдирд┐рдХреНрд╕-рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ Invoke-NativeShell , рдФрд░ /bin/sh - рди рдХрд┐ bash - рдХреЙрд▓ рдХрд░реЗрдВред

      • рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдПрдХ рд░рд╕реАрдж рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ ins рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

    • рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг --% рдФрд░ рд╣рд╛рде рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рднреА рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:

      • рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрд╣рд╛рдВ рдХрдорд╛рдВрдб рджреЗрд╢реА рд╢реЗрд▓ рдореЗрдВ рдЬрд╛рддреА рд╣реИ (_рдП рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг) рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд░реЗрдЧреБрд▓рд░ рдкреЙрд╡рд░рд╢реЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ Invoke-NativeShell / ins рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд┐рдирд╛ PowerShell рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдиред

      • рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ _PowerShell_ рд╡реИрд░рд┐рдПрдмрд▓ рдорд╛рди (рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ --% рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ _expandable_ string ( "...." рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЪреВрдБрдХрд┐ рдЬреЛ рд╢рдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреА рд╣реИрдВ, # 1995 рдХреЛ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрдбрд╝реЗ рдкрд┐рдЫрдбрд╝реЗрдкрди рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рднреА рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрдЖрд░реНрдб рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ, https://github.com/PowerShell/PowerShell/issues/1995##uecomment-562334606 - рджреЗрдЦреЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рддрд╛рдХрд┐ рдЖрдкрдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рджрд░реНрдж рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЪреВрдХред

рдЗрд╕рд▓рд┐рдП: рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреИрд╕реЗ &! рдХреЗрд╡рд▓ рдСрдкреНрдЯ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рддрд╛рдХрд┐ # 1995 рдХреЗ RFC рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ ред https://github.com/PowerShell/PowerShell-RFC/pull/90ред рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрднреА рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ & рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди / рдордВрдЧрд▓рд╛рдЪрд░рдг рд╣реИ рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ _PowerShell_ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИ - https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -640711192 рджреЗрдЦреЗрдВ - рдФрд░ рдореИрдВ PowerShell рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓рдХреНрд╖реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдореА рд╢рдмреНрджрд╢рдГ рдЯреЛрдХрди рдХреЛ рдордЬрдмреВрдд рд░реВрдк рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ - _рдерд┐рд╕ рдХрд┐рд╕реА рднреА рд╢реЗрд▓ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдЬрдирд╛рджреЗрд╢ рд╣реИ, рдЬрд┐рд╕реЗ PowerShell рдиреЗ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдлрд╕реЛрд╕рдЬрдирдХ рд░реВрдк рд╕реЗ рдХрднреА рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб - рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ _not_ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ (рдЬрдм рд╕реАрдзреЗ рдпрд╛ & -рд╕рд╛рде рдпрд╣ рдбреЙрдХреНрд╕ рдореБрджреНрджрд╛ рджреЗрдЦреЗрдВ) - рддрдм рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

PS> &! bash -c 'echo "one two"'
one two   # Currently (invoked with & instead of &! or with neither) prints only 'one', 
          # because PowerShell passes the entire argument (brokenly) as  "echo "one two"",
          # which the target program sees as *2* verbatim arguments `echo one` and `two`

рд╡рд░реНрддрдорд╛рди / рдкреБрд░рд╛рдиреЗ PowerShell рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -30333359 (https: // рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕реАрдорд╛рдУрдВ) рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред github.com/PowerShell/PowerShell/issues/1995#issuecomment-649560892), рдФрд░ https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -562334606 рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрд╕реНрдХрд░рдгред

рдкреБрдирд╢реНрдЪ: (рдХреЗрд╡рд▓ рдкреНрд░рддреАрдХ-рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ) рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ: рд╕рдорд╛рдзрд╛рди _enhance Get-Help рдХреЛ рдСрдкрд░реЗрдЯрд░ рд▓реБрдХрдЕрдк рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - # 11339 рджреЗрдЦреЗрдВ, рдЬреЛ рднреА рдПрдХ рдЕрдВрддрд░рд┐рдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред

рдЪреВрдБрдХрд┐ рдЬреЛ рд╢рдХреНрддрд┐рдпрд╛рдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреА рд╣реИрдВ рдХрд┐ # 1995 рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрд┐рдЫрдбрд╝реЗ рд╣реБрдП рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рднреА рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдп-рдЦрдВрдб рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ, # 1995 (рдЯрд┐рдкреНрдкрдгреА) рджреЗрдЦреЗрдВ - рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдСрдкреНрдЯ-рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЙрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ, рддрд╛рдХрд┐ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рджрд░реНрдж рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ mklement0 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкреНрдЯ-рдЗрди https://github.com/PowerShell/PowerShell/issues/1995 рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЗрдЪреНрдЫрд╛рдзрд╛рд░реА рд╕реЛрдЪ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдореИ рдЧрд▓рдд рд╣реБ?

@AndrewSav , рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рд╡рд░реАрдпрддрд╛ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдкреНрдЯ-рдЗрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐, @joeyaiello рдиреЗ https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -653164987 рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдд рдХрд╣реА, рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрджреНрджрд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ (рдЬреЛрд░ рдЬреЛрдбрд╝рд╛):

рд╣рдо рдпрд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рднреА рдЫреВрддреЗ рд╣реИрдВ, рд╡рд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдПрдХ рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ _is_ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдкреНрдЯ-рдЗрди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдкреНрд░рдорд╛рдгрд┐рдХ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреА рдХреАрдордд рд╣реИ)ред

рдЬрдмрдХрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ # 1995 рдХреЛ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ) _other_ рдЧреЛрд▓реЗ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВ, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ, рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╣ рдерд╛:

  • рдЪрд▓рд┐рдП рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ # 1995 (https://github.com/PowerShell/PowerShell-RFC/pull/90 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд PowerShell рдХреЗ _own_ (рдЧреИрд░-рдЕрдиреНрдп-рд╢реЗрд▓-рдЗрдореНрдпреВрд▓реЗрдЯрд┐рдВрдЧ) рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред

    • рдирдП рдХреЛрдб рдХреЛ рд╣рдореЗрд╢рд╛ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп & рдмрдЬрд╛рдп &! (рдпрд╛ рдЬреЛ рднреА рд░реВрдк рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдк рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП & рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) ред
    • _PowerShell_ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, &! рдХреЛ & рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдм рдХрднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА), рдЬрд┐рд╕рд╕реЗ &! рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рдкреБрди: рдЙрдкрдпреЛрдЧ-рдХрдорд╛рдВрдб-рд▓рд╛рдЗрдиреНрд╕-рдлреНрд░реЙрдо-рдЕрджрд░-рд╢реЗрд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдЙрдкрдпреБрдХреНрдд Invoke-NativeShell / ins cmdlet рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдЙрдкрдпреБрдХреНрдд рджреЗрд╢реА рд╢реЗрд▓ ( cmd /c рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ , /bin/sh -c рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ _single string_ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

    • рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ ' рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдХрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛рдо рдХрд░реЗрдЧрд╛; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

      ins 'ls | рдмрд┐рд▓реНрд▓реА

    • ' рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде, рд╡реЗ рдпрд╛ рддреЛ _doubled_ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

      ins 'рдЧреВрдВрдЬ' 'рд╣рд╛рдп' | рдмрд┐рд▓реНрд▓реА

    • рдпрд╛, рдпрджрд┐ рдЗрдЪреНрдЫрд╛ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдЫреВрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА @TSlivede рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) - рдЬрдмрдХрд┐ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдмреЛрдЭрд┐рд▓ рд╣реИ, рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

      ins @ '
      рдЧреВрдВрдЬ 'рд╣рд╛рдп' | рдмрд┐рд▓реНрд▓реА-рдПрди
      '@

    • рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, _expandable_ (рдкреНрд░рдХреНрд╖реЗрдк) рд╕реНрдЯреНрд░рд┐рдВрдЧ ( "..." рдпрд╛ @"<newline>...<newline>"@ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдореВрд▓ рд╢реЗрд▓ рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ _PowerShell_ рдЪрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ (рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ --% рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ):

      $ рдлреВ = 'рд╣рд╛рдп'
      ins @ "
      рдЧреВрдВрдЬ '$ рдлреВ' | рдмрд┐рд▓реНрд▓реА-рдПрди
      "@

    • рдзреНрдпрд╛рди рджреЗрдВ:

      • Invoke-NativeShell cmdlet cmd /c / /bin/sh -c рдХреЙрд▓реНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдХрд╛рдлреА рдкрддрд▓рд╛ рдЖрд╡рд░рдг рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реАрдзреЗ рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╡рд╣ рд▓рд╛рдн рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо рдФрд░ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдкрд╛рд╕рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЬрд╛рдиреЗрдВред
      • рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рднрдХрд╛рд░реА рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк -OutVariable рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдФрд░ рдпрд╣ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ -Error* рдкреИрд░рд╛рдореАрдЯрд░ _stderr_ рдкрд░ рдХрд╛рд░реНрдп рдХрд░реЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдорд░реВрдкрддрд╛ рдХреЗ рд▓рд┐рдП, Invoke-Command рднреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛)ред

        • рдЪреВрдБрдХрд┐ POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ -c рд╕рд╛рде _multiple_ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ - рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдмрд╛рдж рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЙрд╕ рдХреЛрдб рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рд╢реБрд░реБрдЖрдд $0 (!) рд╕реЗ рд╣реЛрддреА рд╣реИ - рдЙрджрд╛ bash -c 'echo $@' _ 1 2 3 - рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

        • рдЪреВрдБрдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рджреЗрд╢реА рд╢реЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, cmd рдФрд░ sh рдмреАрдЪ рдореВрд▓рднреВрдд рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрд▓реНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ _not_ рдкреЛрд░реНрдЯреЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рд╣реЛрддреА рд╣реИрдВредрдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ PowerShell рдХреЗ _own_ рддрд░реНрдХ-рдкрд╛рд╕рд┐рдВрдЧ (# 1995) рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддрдм рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рд╕рд╣реА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рдкрд╣реЗрд▓реА рдХрд╛ рдЕрдВрддрд┐рдо рдЯреБрдХрдбрд╝рд╛ _documentation_ рд╣реИред

https://github.com/MicrosoftDocs/PowerShell-Docs/issues/5152 рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рд╡рд┐рд╖рдп рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, about_Native_Calls ), рдЬрд┐рд╕реЗ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░, рдЪрд╛рд╣рд┐рдП рдХрд╡рд░ _all_ рдкрд╣рд▓реВ рдЬреЛ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ; рдПрдХ рддрд░рдл рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛рдЪреИрдЯрд░ рдХреЗ рдХрд╛рд░рдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рдиреБрдХрд╕рд╛рди, рдПрдХ рдХрдЪреНрдЪреА рдмрд╛рдЗрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐, рдкрд╛рд╡рд░рд╢реЗрд▓ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдПрдХреАрдХрд░рдг, ...), рд╣рд╛рде рдореЗрдВ рдореБрджреНрджреЛрдВ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП:

  • рдПрдореНрдмреЗрдбреЗрдб " (рдФрд░ _empty_ рддрд░реНрдХ) рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ) рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╕реНрддрд╛рд╡, https://github.com/MicrosoftDocs/PicShell-Docs рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ) рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ / рдореБрджреНрджреЛрдВ / 2361), рдФрд░ рдЙрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ (рдореИрдиреБрдЕрд▓ \ -рд╢рд░реАрд░ рдпрд╛ # 1995 рдХреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реАрдзреЗ рд╡рд┐рд╖рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред

  • рдХреИрд╕реЗ рдХреЗрд╡рд▓ &! рдХрд╛ рдЙрдкрдпреЛрдЧ рдореВрд▓ (рдмрд╛рд╣рд░реА) рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЙрдЪрд┐рдд рддрд░реНрдХ-рдкрд╛рд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗред

  • рдХреИрд╕реЗ Invoke-NativeShell / ins рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ _ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рджреЗрд╢реА рд╢реЗрд▓_ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд┐рдд рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЖрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди
  2. & рдСрдкрд░реЗрдЯрд░
  3. рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯреВрдЯреЗ рд╣реБрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдВрдЧреА:

  1. рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди
  2. & рдСрдкрд░реЗрдЯрд░
  3. рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рдХреНрд░рд┐рдпрд╛
  4. рдФрд░! рдСрдкрд░реЗрдЯрд░
  5. рд╕реНрдЯрд╛рд░реНрдЯ-ProcessV2

рдХреНрдпрд╛ рдпрд╣ ping 127.0.0.1 рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ?

рд╣рд╛рдБ, рдпрд╣ рдореЗрд░рд╛ рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдСрдкрд░реЗрдЯрд░ @iSazonov рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреНрд░рдорд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗрд╡рд▓ рдкрд╣реЗрд▓реА рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ, рддреЛ рдпрд╣ рддрдереНрдп рдХрд┐ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рднреНрд░рдо рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рд╣рдо UX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрднреА рдФрд░ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рд╣рдо UX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрднреА рдФрд░ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╣рд▓рдХреЛрдВ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред https://github.com/PowerShell/PowerShell/issues/1995 рд╡рд╣ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@iSazonov :

рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдореМрдЬреВрджрд╛ рдХрдореА рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдЪрдп рди рджреЗрдВ:

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣реЗрдВ:

  • _Console_ (рдЯрд░реНрдорд┐рдирд▓) рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Start-Process рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ (рдЬрдм рддрдХ - рдЬреЛ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ - рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ _ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ_)ред

  • & рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди рдФрд░ рдордВрдЧрд▓рд╛рдЪрд░рдг _equivalent_ рд╣реИрдВ; (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рддрд░рдл рдЫреЛрдбрд╝рдХрд░), & рдХреЗрд╡рд▓ рдХрднреА рднреА _syntactic_ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрдм рднреА рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рдпрд╛ рдкрде _quoted_ рдФрд░ / рдпрд╛ _variable Reference_ рд╣реЛрддрд╛ рд╣реИред


рдЯреВрдЯреЗ рд╣реБрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдВрдЧреА:
рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди

  • & рдСрдкрд░реЗрдЯрд░
  • рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рдХреНрд░рд┐рдпрд╛
  • рдФрд░! рдСрдкрд░реЗрдЯрд░
  • рд╕реНрдЯрд╛рд░реНрдЯ-ProcessV2
  • рдирд╣реАрдВ, рдХреЛрдИ Start-ProcessV2 , рдмрд╕ рдПрдХ _new рдкреИрд░рд╛рдореАрдЯрд░_, -IndividualArguments - https://github.com/PowerShell/PowerShell/issues/5576#issuecommentment -552124719 рджреЗрдЦреЗрдВ

  • рд╣рд╛рдВ, &! (рдпрд╛ рдЬреЛ рднреА рдкреНрд░рддреАрдХ рд╣рдо рддрдп рдХрд░реЗрдВрдЧреЗ) рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ _supersedes рджреЛрдиреЛрдВ & рдФрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдордВрдЧрд▓рд╛рдЪрд░рдг (рдХрдо рд╕реЗ рдХрдо _external рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ _all_ рдХрдорд╛рдВрдб рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде) - рдЬрд┐рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ ping 127.0.0.1 рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ?

ping 127.0.0.1 рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк bash -c 'echo "one two"' рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
&! bash -c 'echo "one two"'

рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди - рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реАрдзреЗ рдордВрдЧрд▓рд╛рдЪрд░рдг / & рд╡реНрдпрд╡рд╣рд╛рд░ _рдиреЛрдЯ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо рд╣реИ: _ рдпрджрд┐ рдЖрдк рдмрд╛рд╣реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рддрд░реНрдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ &! _ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдСрдкреНрдЯ-рдЗрди - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк ( powershell.config.json рдорд╛рдзреНрдпрдо рд╕реЗ) рдпрд╛ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЪрд░ - рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИрдВ:

  • рд╡рд░реАрдпрддрд╛ рдЪрд░реЛрдВ рдХреА рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдСрдкреНрдЯ рдЗрди-рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрддреА рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рджреЗрдЦреЗрдВ https://github.com/PowerShell/PowerShell/issues/1995#ississecomment-650262164

  • рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреВрд░реЗ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдкреНрдЯ-рдЖрдЙрдЯ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

  • рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓ рд╕реЗ _separate_ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреЙрд▓ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, &! рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП 5 рдмрдЯрди рдкрд╛рдПред ЁЯШД

рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЗрддрдирд╛ рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ (рдкреНрд░рддреНрдпрдХреНрд╖ рдордВрдЧрд▓рд╛рдЪрд░рдг рдФрд░ & ) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рддрд╛рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ V8.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджрд┐ рд╣рдорд╛рд░реА рдЗрдЪреНрдЫрд╛ рдЗрддрдиреА рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ ( prog.exe param1 param2 -Whatif рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕-рд╡реНрд╣рд╛рдЯреНрд╕рдПрдлрд╝ рдХреЗ рд▓рд┐рдП) рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рдХрд┐ testargs рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рднрд╛рдЧрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░ рд╕рдордп рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЦрд░реНрдЪ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕рддреНрд░ рдореЗрдВ, рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рджрдЧреА, рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рдХреБрдЫ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред

@iSazonov :

рддрдм рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ (рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрд╣реНрд╡рд╛рди рдФрд░ & рдХреЗ рд▓рд┐рдП) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рддрд╛рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ V8.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ

рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ _my_ рд╡реЛрдЯ рд╣реИ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡реЗ рд╢рдХреНрддрд┐рдпрд╛рдВ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ ? [_update_ - # 13129 рджреЗрдЦреЗрдВ]
рдпрджрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рдорд╛рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдВрдд рдореЗрдВ рд╕рднреА рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рд╛рдорд╛рдиреЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВ - # 6745 рджреЗрдЦреЗрдВ

рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЗрддрдирд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдХреЗ рджреЛ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВ:

  • рдЯреВрдЯреА рд╣реБрдИ рджрд▓реАрд▓ рдХреЗ рдХрд╛рд░рдг рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЪрд▓реА рдЖ рд░рд╣реА рдкреАрдбрд╝рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЬреИрд╕рд╛ рдХрд┐ # 1995 рддрдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рдФрд░ рдЕрдирдЧрд┐рдирдд рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкреНрд░рд╢реНрдиред

  • рдХреНрдпреЛрдВрдХрд┐ - рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рднреА рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ - рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдмреБрд▓рд╛рдирд╛ рдХрд┐рд╕реА рднреА рд╢реЗрд▓_ рдХрд╛ _core рдЬрдирд╛рджреЗрд╢ рд╣реИред

рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬрд╝-рдХреЗрд╡рд▓ рджрд┐рдиреЛрдВ рдореЗрдВ, рд╕рдХреНрд╖рдо рдмрд╛рд╣рд░реА рд╕реАрдПрд▓рдЖрдИ рдХреА рдХрдореА рдиреЗ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рдХрдо рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдлреЛрди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдЬрддрд╛рдИ, рдФрд░ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╡рд░рд╢реЗрд▓ (рдХреЗрд╡рд▓ рдкрд╛рд╡рд░рд╕реНрд▓реЗ-рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ) рдХреЛ рджрд░реНрдж рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордп рдмрджрд▓ рдЧрдпрд╛ рд╣реИ:

рд╣рдо рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдзрди рдХреА рдЙрдореНрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рдХрд╛рд╕, рд╕реАрдЖрдИ рдФрд░ рддреИрдирд╛рддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
рдпрджрд┐ PowerShell рдХреЛ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдПрдХ рдЕрдиреБрдорддрд┐-рд╕реЗ-рдмреНрд░реЗрдХ-рдмреИрдХрд╡рд░реНрдб-рд╕рдВрдЧрддрддрд╛ v8.0 рд╣реЛрддрд╛ рд╣реИ (рдЙрдВрдЧрд▓рд┐рдпрд╛рдВ рдкрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ), рддреЛ рдЗрд╕рдХреА рд░рд┐рд╣рд╛рдИ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╣рдореЗрдВ _also_ рдХреЛ рдПрдХ рдЕрдВрддрд░рд┐рдо рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡реГрджреНрдзрд┐ рдХреА рдЬрд┐рддрдиреА рдЬрд░реВрд░рдд рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдЕрдХреЗрд▓реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рджрд░реНрдж рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд░рдирдЯрд╛рдЗрдо рд╕рдорд╛рдзрд╛рди рдХреА рдХрдореА рдХреЗ рд▓рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдмрджрд╕реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЧреИрд░-рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди _nentitates_ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ (рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдЬреЛ рднреА рдХреБрдЫ рднреА рд╣реЛред

&! рдЬреЛ рдХрдо рдмрджрд╕реВрд░рдд рд╣реИ, рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ "рдкреНрд░рджреВрд╖рдг" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рднрд╛рд╖рд╛ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рд╢рд┐рдк рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕реЗ iep рдлрд╝рдВрдХреНрд╢рди ( рдореИрдВ nvoke- рдИ xternal рдкреА rogram) рдЬреЛ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛
(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╛ рддреЛ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ, pause ) рдпрд╛ cmd.exe рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рдЬреИрд╕реЗ, cd.. [sic]) рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред)

рдЗрд╕ рдкреНрд░рдХрд╛рд░, bash -c 'echo "one two"' рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк iep bash -c 'echo "one two"' рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ
рдпрд╛, рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

# Pass JSON to an external utility (Unix example)
# Without `iep`, the embedded double quotes are lost and *broken JSON* is passed.
iep /bin/echo '{ "foo": "bar" }'

рдлрд┐рд░, рд╣рдо рдЕрдВрддрддрдГ рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдореЗрдВ _compromise_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрджреНрд░рд╡ рд╣реИред


рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ (prog.exe param1 param2 -Whatif рдФрд░ Start-Process -WhatIf рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди) рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рдХрд┐ рдХреМрди рд╕рд╛ рдЯреЗрд╕реНрд╕рд░рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ / & -рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реНрд╡рд╛рди рдПрдХ cmdlet рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд╕-рдереНрд░реВ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, -WhatIf рдХреЛ рдПрдХ рдЖрдо рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рддреНрд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЯреВрдЯрдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐) рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣реИ)ред

рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдСрдкреНрдЯ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ -DoItRight рд╕реНрд╡рд┐рдЪ (рдпрд╛ рдкреНрд░рддреАрдХ-рдЖрдзрд╛рд░рд┐рдд рдПрдХ, --% ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ - рдФрд░ рдпрд╣ рдореБрдЭреЗ iep -рдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ / &! рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рднреА рдмрджрддрд░ рдмрдирд╛рддрд╛ рд╣реИред

(рдПрдХ рдиреЙрди-рдмреНрд░реЗрдХрд┐рдВрдЧ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╡рд┐рдХрд▓реНрдк, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, Invoke-Command рдмрдврд╝рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ -WhatIf рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╣рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдСрдкреНрдЯ-рдЗрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рд╡реНрдпрд╡рд╣рд╛рд░, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред)

рдореИрдВ @iSazonov рд╕реЗ рд╕рд╣рдордд @ mklement0 рдиреЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рд░рд┐рд▓реАрдЬ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдХрд╣рд╛ рдХрд┐ рдареАрдХ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ ASAP рдХреЛ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИред рд╕рднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд┐рд░реНрдл рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
https://github.com/PowerShell/PowerShell/issues/1995#issuecomment -562334606 рд╕рд╣реА рд╣реИ?

@ mklement0 рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ iep /

@ рдмрдврд╝рддреА :

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП: рд▓рд┐рдВрдХреНрдб iep рдлрд╝рдВрдХреНрд╢рди # 1995 рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ _this_ рдкреНрд░рд╕реНрддрд╛рд╡ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _not_ рд▓рд╛рдпрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдУрдкреА рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЗрд░рд╛рджрд╛ рд╣реИ _also_ рд╣рд▓ # 1995ред

1995 рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _PowerShell_ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ (рдЕрдиреНрдп рд╢реЗрд▓ рдХреЗ рдирд╣реАрдВ) рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ_ рдХреЗ рдмрд╛рдж PowerShell рджреНрд╡рд╛рд░рд╛ рд╢рдмреНрджрд╢рдГ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред

PowerShell рдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдареАрдХ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рдЖрдк _PowerShell_ рдХрдорд╛рдВрдб рдкрд░ рддрд░реНрдХ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, _external рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣реА iep рдлрд┐рдХреНрд╕ рд╣реИред

рдпрд╣ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг _re-quoting рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдмрдЪрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ_ рджреГрд╢реНрдпреЛрдВ рдХреЗ рдкреАрдЫреЗ_, рдЬрдм рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЕрдВрддрддрдГ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
https://github.com/PowerShell/PowerShell-RFC/pull/90 рдПрдХ рдЙрдЪрд┐рдд рдлрд╝рд┐рдХреНрд╕ (рдкрд┐рдЫрдбрд╝реА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╕рдордЭреМрддрд╛, рдФрд░ рдХреБрдЫ рдЫреЛрдЯреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЕрднреА рддрдХ рджрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ) рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд░реА-рдХреЛрдЯрд┐рдВрдЧ рдФрд░ рднрд╛рдЧрдиреЗ рдХреЗ рд▓рд┐рдП System.Diagnostics.ProcessStartInfo.ArgumentList рд╢реБрд░реБрдЖрдд рдХреА (рд╣рдо рдкрд╛рд╡рд░рд╕реНрд▓реЗ рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ) - рдЬреЛ, рд╕рдВрдпреЛрдЧрд╡рд╢, рдХреЗрд╡рд▓ рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ _on Windows_; рдЬрдм рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреВрдирд┐рдХреНрд╕ рдкрд░, рд╕рдордЭрджрд╛рд░реА рд╕реЗ, _there рдХреЛрдИ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ (рд╢реЗрд▓ рдХреЗ рдмрд╛рд╣рд░): рдЖрдк рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ рддрд░реНрдХ-рд╡рд┐рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

  • рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ iep рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдПрдХ рдХрдо-рд╕рдорд╛рд░реЛрд╣ рд╕реНрдЯреЙрдкрдЧреИрдк рдСрдкреНрдЯ-рдЗрди рд╣реЛрдЧрд╛, рдЬреЛ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рддрд░реНрдХ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдЙрдЪрд┐рдд рдирд┐рд░реНрдзрд╛рд░рдг - рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ - рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

  • Invoke-NativeShell ( ins ) cmdlet рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ - рд╕реНрдЯреЙрдкрдЧреИрдк рдирд╣реАрдВ - _a рд╡рд┐рднрд┐рдиреНрди рд╢реЗрд▓ рдХреЗ_ (рджреЗрд╢реА рд╢реЗрд▓ рдХреА) рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, _its рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ - рдКрдкрд░ рджреЗрдЦреЗрдВ ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд╛рдпрд▓ рдХрдорд╛рдВрдб рдХреЛ рдХрд╛рдЯрдирд╛ рдФрд░ рдЪрд┐рдкрдХрд╛рдирд╛ рдкрд╛рдпрдерди рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдЬрд╛рдУ рдкрддрд╛ рд▓рдЧрд╛рдУред рдпрд╣ рдЙрди рд╕рднреА рдХрдЯрд░-рдФрд░-рдкреЗрд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╕рдордЭ рд▓рд┐рдпрд╛ рд╣реИ; рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╕реНрдкрд╖реНрдЯрддрдГ рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХреБрдЫ рд░рдгрдиреАрддрд┐рдХ рд░реВрдк рд╕реЗ рдкреВрдВрдЬреАрдЧрдд рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реЛрдиреЗ рджреЗрдВ: рдбреА

# NEW SOLUTION: the entire pipeline AS ABOVE is sent to WSL, then the results are returned to powershell
# and piped, in powershell, to foreach-object
(& --% wsl ls | grep -i "foo") | % { "match {0}" -f $_ }

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ? рдпрджрд┐ рдкрд╛рдЗрдк --% рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдЧреВрдВрдЧрд╛ рдЪрд░рд┐рддреНрд░ рд╣реИ: рдПрдХ рддрд░реНрдХред рдСрдкрд░реЗрдЯрд░ рдкреВрд░реНрд╡рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЬреБрдбрд╝рд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдпрд╛ рд╕рдм-рдбреЗрдкреНрд░рд┐рд╕рд┐рд╢рди рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рддреЛ рдлрд┐рд░ рд╕реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рд╡рд┐рдЪрд╛рд░?

рдЖрдк рдЬреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрдВрдж рдХреЛрд╖реНрдардХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп DWIM рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ - рд▓реЗрдХрд┐рди PowerShell HAL рдирд╣реАрдВ рд╣реИред

рд╕рднреА рдХреА рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣рд╛рдВ рдЦреБрдж рдХреЗ рд░реВрдк рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдПред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдирдЯрдЦрдЯ рдХрд┐рд░рдХрд┐рд░рд╛ рд╣реЛ, рдХреБрдЫ uber-рдЕрдВрдХ:

  • рдореИрдВ рдЕрднреА рднреА рдПрдХ vNext / 8.0 рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рд╕рд╛рдорд╛рди рдХреА рдПрдХ рдкреВрд░реА рдирдИ рд░реЛрд╢рдиреА рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджрд░реНрджрдирд╛рдХ рд╣реИ, рдФрд░ рдореИрдВ рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рд╣рдо рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдЧрд▓рддреА рдХреЛ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ PowerShell рдиреЗ рдХрднреА рдмрдирд╛рдпрд╛ рд╣реИ, рдХрдИ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВред рд▓реЗрдХрд┐рди рдмрд╣реБрд╕рдВрдЦреНрдпрдХ PS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдБ рдореБрджреНрджреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд▓рдЯрдХ рд░рд╣реЗ рд╣реИрдВ, SO рдПрдЬ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдШреБрдЯрдиреЗ рдХреЗ рдЧрд╣рд░реЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ 4-10 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╡реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдЧреНрд░реЗрдб рдкрд░ рдЙрдирдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрдЯрдиреЗ рдкрд░ рд╣рдо "рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣реЗ рдереЗ"ред рд╡реЗ рдмрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ "рдЕрдкрдбреЗрдЯрд┐рдВрдЧ рдкреАрдПрд╕ рдиреЗ рдореБрдЭреЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрдкрдбреЗрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ", рдФрд░ рдлрд┐рд░ рд╣рдо рдФрд░ рднреА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рдЕрдкрдбреЗрдЯ рдФрд░ рдЕрдкрдирд╛рдиреЗ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВред
  • рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреБрдЫ рд▓реЛрдЧ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╢рд╛рдУрдВ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕реЗ рдпрд╛ рддреЛ / рдпрд╛ рдЕрдиреНрдп рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ 1995 рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╣реВрдВрдЧрд╛, рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рдХрдард┐рди рдирдЬрд╝рд░ рд░рдЦреЗрдВрдЧреЗ), рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ "рдЯреНрд░реИрдк рдбреЛрд░" рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдирдП рдФрд░ рдЕрдиреБрднрд╡реА рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░рд╛рд╢рд╛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдмрд╛рдБрдз рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЕрднреА рднреА рдШрд░ рдХреЗ рдкреАрдПрд╕ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдзрд╛рди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХреЗрдВред

рдЕрдм, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВрдиреЗ рдкрдврд╝рд╛:

  • рдореИрдВ #! рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЗрдЪреНрдЫрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ (рдпрд╛ рддреЛ &! рдпрд╛ $! , рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрднрд╡рддрдГ рджреБрднрд╛рд╖рд┐рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ .рдЕрдЧрд░ рдореИрдВ $! net <stuff> , net.exe рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ, рддреЛ рдореЗрд░реА рджреБрднрд╛рд╖рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдкрд░, "рджреЗрд╢реА" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА sh / bash / рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рд╣реИ, рдЙрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдмрд╛рдЗрдирд░реА рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕реЗ рдореИрдВ рдкрд╛рдпрдерди рдХреЛ *.py рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ $! /usr/bin/python *.py рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ $! python *.py рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмреИрд╢ рдХреЛ рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдФрд░ рдлрд┐рд░ рд╣рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдЪреЛрдВ рдХреА рд╕реВрдЪреА python ред
  • рдЬреИрд╕рд╛ рдХрд┐ @oising рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ --% рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ, рдлреНрд░рдВрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рддред рдбрд┐рд╕реНрдХрд╡рд░рдмрд┐рд▓рд┐рдЯреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЗрд╕ рдПрдХ рдХреА рдЦреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 10 рд╕рд╛рд▓ рд╣реИрдВ ( рдпрд╣ рдЕрдм Google-рд╕рдХреНрд╖рдо рд╣реИ! рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрд╕ рдЙрд╕реА рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВред (рдореИрдВ рдПрдХ рдерд╛ рдЬрд┐рд╕рдиреЗ @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдмрдирд╛рдпрд╛ рдерд╛) рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рд░рдЦреЗрдВ)ред рдкреНрд░рд╢реНрди, рд╣рд╛рд▓рд╛рдВрдХрд┐: рдХреНрдпрд╛ рд╣рдореЗрдВ рдпрд╣рд╛рдВ & рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ --% native.exe do /some $stuff рд╕рд╛рде рд▓рд╛рдЗрди рд╢реБрд░реВ рдХрд░реЗрдВ?
  • @rjmholt : рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ --% рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдБ рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рдмрд╛рдж рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдкрдХрд╛ "рдирдпрд╛" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡реНрдпрд╡рд╣рд╛рд░ "рдЬрд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИред
  • рдЗрд╕реЗ @jazzdelightsme рд╕реЗ рдкрдврд╝реЗрдВ рдФрд░ рдореИрдВ рд╕рд╢рдХреНрдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ:

    рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдмрд╕реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд▓рд┐рдП рднреА рд╣реИ, рдЬреЛ рдмрд╕ рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдФрд░ рдмреЗрд▓рд╛ рдХреЗ рдмрд┐рдирд╛ StackOverflow рд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкрд╣рд▓реВ рд╣реИ, рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрд╕рдУ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рддреЛ, рдпрд╣ рд╡реЗрдм рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕реЗ рдбреЙрдХреНрд╕ рд╣реИ рдЬреЛ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдмреИрд╢ рдЬреИрд╕реЗ рд╢реЗрд▓ рдореЗрдВ рд╣реИрдВред

  • рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдХреНрдпрд╛ # 1995 рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдП) рдЙрд╕ рддрд░рд╣ рдХреЗ рдЕрдЬреАрдм рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рдкреВрдВрдЫ рд╣реИ, рдФрд░ рдмреА) рд╡реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдХрд╛рдлреА рд╣рд┐рдЯ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдореЗрдВ "рдЯреНрд░реИрдк рдбреЛрд░" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗ, рдЬрд╣рд╛рдВ рд╡реЗ рдЧреЛрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╣рдорд╛рд░реЗ рдиреЗрд╕реНрдЯреЗрдб рдмрдЪрдиреЗ рдХрд╛ рдЦрд░рдЧреЛрд╢ рдХреА рдорд╛рдВрдж (рдХреЗрд╡рд▓ рд╡рд╣рд╛рдБ # 1995 рдХреА рддрд░рд╣ рдПрдХ рдмрдЧ рд╣реИ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдПрдХ рдмрд╛рд░ рднреА рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реБрдП рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ)ред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдЦреБрд▓реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдХреНрдпрд╛ рд╣рдо PowerShell рдореЗрдВ рдХрдорд╛рдВрдб рд╕реЗрдкрд░реЗрдЯрд░ рдФрд░ рдЙрдирдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╛ рдХрдорд╛рдВрдб рд╕реЗрдкрд░реЗрдЯрд░ рднреА рджреЗрд╢реА рд╢реЗрд▓ рдореЗрдВ рд╡рд░реНрдмреЗрдЯрд┐рдо рдкрд╛рд╕ рдХрд░ рджреЗрддрд╛ рд╣реИ?
    рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЕрдЧреНрд░рдгреА рдкреИрддреГрдХ рдХреЗ @oising рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рдкрд╛рдЗрдк, рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдЪреЗрди, рдЖрджрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред , рдпрджрд┐ рдЖрдк рджреЗрд╢реА рдФрд░ рдкреАрдПрд╕ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдорд┐рд▓рд╛рдирд╛ / рдореЗрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд░реАрдм рд▓реЛрдЧреЛрдВ рд╕реЗ рдХреБрдЫ рд░рд╛рдп рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ)ред
  2. рдСрдкрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
    рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ --% рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдмрд╕ рд╡рд╣реА рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛" рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд╖реНрдард╛ рдорд┐рд▓реА рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ @ mklement0 рдЬреИрд╕реЗ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐, рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо --% рдХрд╛ рддрдХрдиреАрдХреА рдЕрд░реНрде рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ @ SteveL-MSFT рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдЬрдВрдЧрд▓реА рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ "рдпрд╣ рд╡рд╣ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╣ cmd рдореЗрдВ рдХрд░рддреЗ рдереЗ" рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ --% рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдВрд╣рд┐рддрд╛рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЦрд┐рдВрдЪрд╛рд╡ рд╣реИ "рджреЗрд╢реА рд╢реЗрд▓ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ"ред

рдореВрд▓ рд░реВрдк рд╕реЗ, рджреВрд╕рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдХрд┐ рд╣рдо рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рд╡рд┐рдВрдбреЛрдЬ рдкрд░, cmd (рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ) PATH рд▓реБрдХрдЕрдк рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, PowerShell рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА EXEs рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ./ рдкреВрд░реНрд╡ рднреБрдЧрддрд╛рди рдХрд░реЗрдВ (рдпрд╛ PATHEXT рдореЗрдВ рдХреБрдЫ рднреА) рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ PATH ред

рддреЛ рдореЗрд░рд╛ рдЦреБрд▓рд╛ рд╕рд╡рд╛рд▓ рд╣реИ: рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реА рдХрдорд╛рдВрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ cmd рдХреЛ рд╕реМрдВрдкрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рд╣реИ рдХрд┐ рд╣рд╛рдВ, рдХреБрдЫ рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЙрдХреНрд╕ / рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЙрди рдЯреВрд▓ рдХреЛ рдХреИрд╕реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред PATH ред рдпрд╣ рд╢рд╛рдпрдж рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

  • рдореИрдВ рдЕрднреА рднреА рдПрдХ vNext / 8.0 рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рд╕рд╛рдорд╛рди рдХреА рдПрдХ рдкреВрд░реА рдирдИ рд░реЛрд╢рдиреА рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдБ, рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ y'all рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рдЗрди рд╕рднреА рдЬрдЯрд┐рд▓ рдмрд╛рдЗрдВрдбрд░ / рдкрд╛рд░реНрд╕рд░ рдорддрднреЗрджреЛрдВ рдХреЛ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддреЗ рд╕рдордп рд╣рдердХрдВрдбрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдЖрдорддреМрд░ рдкрд░ рдЕрдЧрд░ рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд╣рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЖрдИрдЯреАрдЯреА рдореЗрдВ рдореМрдЬреВрдж рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдПрдХ рдкреАрдЖрдИрдЯреАрдП рд╣реЛрдЧрд╛ред

  • рдЬреИрд╕рд╛ рдХрд┐ @oising рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ --% рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдлреНрд░рдВрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИред (...) рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ --% native.exe do /some $stuff рд╕рд╛рде рд▓рд╛рдЗрди рд╢реБрд░реВ рдХрд░реЗрдВ?

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ CreateProcess / exec рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ (рдкреНрд▓рд╕ nix env var рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдЗрди / рдЖрдЙрдЯ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдпрд╛ рдХрдВрд╕реЛрд▓ рдЕрдиреБрд▓рдЧреНрдирдХ)ред рдпрд╛ рд╢рд╛рдпрдж cmd.exe / bash рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд┐рд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рд░рдЦрдиреЗ рдкрд░ рдЕрдЯрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ & рдХреЗ рд╕рд╛рдордиреЗ --% рдпрд╛ рддреЛред рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ / рдСрдкрд░реЗрдЯрд░ рдХреА рддрд░рд╣ рдХрдЪреНрдЪреЗ --% рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдмрд╣реБрд╕реНрддрд░реАрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? --% @" рдФрд░ "@ рдХреЛ var рд╡рд┐рдХрд▓реНрдк рдФрд░ рдЙрдк-рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдФрд░ рдПрдХрд▓ рдЙрджреНрдзрд░рдг @' рдФрд░ '@ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╣рд╛рдБ рддрд╛рд░ рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ?

рдЬреИрд╕реЗ @oising рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛, рдореИрдВ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ -% рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ

рдореЗрд░реЗ рд▓рд┐рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рд╢реНрди, рд╣рд╛рд▓рд╛рдВрдХрд┐: рдХреНрдпрд╛ рд╣рдореЗрдВ рдпрд╣рд╛рдВ & рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЬрдм рддрдХ рдореИрдВ рдЕрднреА рднреА --% & $computedPathToNativeExe foo;@workspace рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддрдм рддрдХ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рд╣реИред рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рджреЗрд╢реА рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ

рдорд╛рдирд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдХреА (-%) рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдВрд╣рд┐рддрд╛рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЦрд┐рдВрдЪрд╛рд╡ рд╣реИ "рджреЗрд╢реА рд╢реИрд▓ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ"ред

рднреА рд╕рд╣рдордд!

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рд╛рдпрдж рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕рддреНрд░ (# 3316) рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗ рдкрд╣рд▓реЗ env var рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ:

--% JEKYLL_ENV=production jekyll build

рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ред

@rkeithhill , call native operator рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди рдХреЛ PowerShell рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдмреЗрдЯрд┐рдо рдХреЛ рдУрдПрд╕ рдХреЗ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓" рдореЗрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг --% & $computerPathToNativeExe foo;@workspace рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдЪ рдирд┐рдХрд▓рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ --% JEKYLL_ENV=productoin jekyll build рдмрд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓рд╛рдЗрди рдХреЛ PowerShell рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдмреЗрдЯрд┐рдо рдХреЛ рдУрдПрд╕ рдХреЗ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓" рдореЗрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдЬреЛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ --% JEKYLL_ENV=productoin jekyll build рд╕рд┐рд░реНрдл Linux / macOS рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдирд╣реАрдВ - рдХрдо рд╕реЗ рдХрдо PowerShell рдХреА рдорджрдж рдХреЗ рдмрд┐рдирд╛, рд╕рд╣реА рдирд╣реАрдВ?

@rkeithhill рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рдЬреЛ рдХрднреА рднреА рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдУрдПрд╕ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рд╢реЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред PowerShell рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП env var рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред

@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЖрдЬ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рдореИрдВрдиреЗ рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╣рдо рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЕрднреА рднреА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд░реНрдЬрди рдкрд░ рдЦреБрд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП --% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЬрд╣рд╛рдВ $foo рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╣реИ рдФрд░ $PWD WSL рдХреЗ рднреАрддрд░ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдкрдХреЛ PowerShell рдХреЗ рднреАрддрд░ WSL рдХреЗ рдмрдЬрд╛рдп && рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ред

$foo рдФрд░ $PWD sh рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рд╕рдВрджрд░реНрдн рд╣реИрдВред

PowerShell рдореЗрдВ рдРрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

$out = --% ls *.txt
$out | select-string hello

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди & рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдк рдХрд┐рд╕реА рднреА PowerShell рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЗрд╕рд▓рд┐рдП:

--% $commandline

$commandline рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде ( cmd рддрд╣рдд) рдпрд╛ рд╢реЗрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рдж ( sh рддрд╣рдд) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред PowerShell рдЙрд╕ рдЪрд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

&n рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдкреЗрд╕реНрдЯ рдХрд░рдХреЗ рдХрдЯ рдФрд░ рдкреЗрд╕реНрдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

--% рдмрд╛рдж рдмрд╕ рдЪрд┐рдкрдХрд╛рдиреЗ рд╕реЗ

wsl рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

рдХреМрдирд╕рд╛?

рдЪреВрдВрдХрд┐ --% рдмрд╛рдж рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рд╢реЗрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

рдпрд╣ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореИрдВ рдПрдХ рдзреБрд░реА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦреВрдВрдЧрд╛ред

рдХреНрдпреЛрдВ рд╣рдо рдПрдХ рд╕рд╛рд╣рд╕реА рд╢рд╛рдмреНрджрд┐рдХ рдХреА рддрд░рд╣ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@! ""! @

рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ -% рдХреЗ рдмрдЬрд╛рдп рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдореБрджреНрджреЛрдВ рдХреА рдЕрдкрдиреА рдореЗрдЬрдмрд╛рдиреА рднреА рд╣реИред

рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдмреЗрд╣рддрд░" рдбрд┐рдЬрд╛рдЗрди рд░рдгрдиреАрддрд┐ рдХреЗ рд╕рд╛рде рджрдлрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЗрди рдПрдЬ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП About_Strings рдореЗрдВ рдмреИрдардирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ред

рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ @!"тАж"!@ Invoke-NativeShell @"тАж"@ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдХреНрдпрд╛ рд╣рдо PowerShell рдХреЛ рдЕрдзрд┐рдХ рдмреНрд░реЗрдирдлрдХ-рд▓рд╛рдЗрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@ yecril71pl

рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ @!"тАж"!@ Invoke-NativeShell @"тАж"@ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдХреНрдпрд╛ рд╣рдо PowerShell рдХреЛ рдЕрдзрд┐рдХ рдмреНрд░реЗрдирдлрдХ-рд▓рд╛рдЗрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдХрд┐ @ romero126 рдХрд╛ рдорддрд▓рдм рдПрдХ рдСрдирд▓рд╛рдЗрди рд╣реЗрд╕реНрдЯрд┐рдВрдЧреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

Invoke-NativeShell @!"complicated native command with "quotes" and | pipe"!@

рдХреЗ рдмрдЬрд╛рдп

Invoke-NativeShell @"
complicated native command with "quotes" and | pipe
"@

рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╣реЗрд░рд┐рдВрдЧрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдореИрдВ @"""тАж"""@ рдФрд░ @'''тАж'''@ рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рдпрд╣ IMO @!"тАж"!@ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред


@ romero126 рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

@ yecril71pl рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

рдпрд╣ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ --% рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдХрд┐ @ romero126 рдХрд╛ рдорддрд▓рдм рдПрдХ рдСрдирд▓рд╛рдЗрди рд╣реЗрд╕реНрдЯрд┐рдВрдЧреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

Invoke-NativeShell @!"complicated native command with "quotes" and | pipe"!@

рдХреЗ рдмрдЬрд╛рдп

Invoke-NativeShell @"
complicated native command with "quotes" and | pipe
"@

рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╣реЗрд░рд┐рдВрдЧрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдореИрдВ @"""тАж"""@ рдФрд░ @'''тАж'''@ рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рдпрд╣ IMO @!"тАж"!@ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

@ romero126 рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ "рд▓рдЧрднрдЧ рдХрдЪреНрдЪреЗ" рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреЙрдк рдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
@TSlivede рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реА рдЧрдИ рдмрд╛рддреЛрдВ рд╕реЗ рдореИрдВ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдХреЗрд╡рд▓ рдереЛрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдЙрджреНрдзрд░рдг рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рднреА рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ BOTH рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди рдФрд░ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЬреЛ рднреА рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЦреБрд▓рд╛ рд░рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдкрд░ рдЬреНрдпрд╛рджрд╛ рдлреЛрдХрд╕реНрдб рд╣реВрдВред

рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ "рдЗрдирд╡реЙрдЗрд╕-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдорд╣рд╛рди рдЬреИрд╕рд╛ рджрд┐рдЦреЗ, рдЙрд╕рдХрд╛ рдПрдХ рдкреНрд░рдзрд╛рди рдмрди рд╕рдХреЗред

рдЗрд╕ рддрд░рд╣ рдПрдХ рдзреБрд░реА рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдЙрди рдореБрджреНрджреЛрдВ рд╕реЗ рдирд╣реАрдВ рдирд┐рдкрдЯреЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдкрд╣рд┐рдпреЛрдВ рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕реНрдкрд┐рдирддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг:

# For this scenario let @!"<text>"!@ be our HereString Verbatim

Invoke-NativeShell @!"complicated native command with "quotes" and | pipe"!@
# or
Invoke-NativeShell @!"
Complicated native command with "quotes" and pipe and <tabs>
"!@

#or 
$r = @!"
complicated native command with custom arguments: {0}
"!@ -format "foo"
Invoke-NativeShell $r

рдпрд╣ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ @ mklement0 рдХрд╡рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХрд╛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рдХреЙрдореИрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ; рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ "рд▓рдЧрднрдЧ рдХрдЪреНрдЪреЗ" рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреЙрдк рдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдпрд╣ ' рдФрд░ @' рд▓рд┐рдП рд╣реИред

рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ "рдЗрдирд╡реЙрдЗрд╕-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдорд╣рд╛рди рдЬреИрд╕рд╛ рджрд┐рдЦреЗ, рдЙрд╕рдХрд╛ рдПрдХ рдкреНрд░рдзрд╛рди рдмрди рд╕рдХреЗред

рдореВрд▓ рдЖрджреЗрд╢ рддрд╛рд░ рдХрд╛ рдПрдХ рдХреНрд░рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред @!" рдХреА рдХреНрд╖рдорддрд╛ рдПрдХ рд╕реНрдЯреЗрдкрд▓ рдмрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЕрдЪрд┐рдВрддреНрдп рджрд┐рдЦрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ "рд▓рдЧрднрдЧ рдХрдЪреНрдЪреЗ" рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреЙрдк рдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдпрд╣ ' рдФрд░ @' рд▓рд┐рдП рд╣реИред

рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ "рдЗрдирд╡реЙрдЗрд╕-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдорд╣рд╛рди рдЬреИрд╕рд╛ рджрд┐рдЦреЗ, рдЙрд╕рдХрд╛ рдПрдХ рдкреНрд░рдзрд╛рди рдмрди рд╕рдХреЗред

рдореВрд▓ рдЖрджреЗрд╢ рддрд╛рд░ рдХрд╛ рдПрдХ рдХреНрд░рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред @!" рдХреА рдХреНрд╖рдорддрд╛ рдПрдХ рд╕реНрдЯреЗрдкрд▓ рдмрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЕрдЪрд┐рдВрддреНрдп рджрд┐рдЦрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рднреНрд░рдорд┐рдд рд╣реИрдВред рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдореИрдВ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ред
рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдФрд░ рдбрдмрд▓ рдЙрджреНрдзрд░рдг рдХреЗрд╡рд▓ $ рдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдирд╣реАрдВ рдмрдЪрддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд╕реАрдорд┐рдд рднреА рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдм рдЗрд╕рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдм рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдЕрднреА рднреА рдЙрди рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреВрд░реЗ рдмрд┐рдВрджреБ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ! рдХрдорд╛рдиред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ рддреЛ рдореИрдВ рд╕рднреА рдХрд╛рдиреЛрдВ рдХреЗ рдкрд╛рд╕ рд╣реВрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдзрд╛рд░ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ!

рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдФрд░ рдбрдмрд▓ рдЙрджреНрдзрд░рдг рдХреЗрд╡рд▓ $ рдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдирд╣реАрдВ рдмрдЪрддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд╕реАрдорд┐рдд рднреА рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдм рдЗрд╕рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдм рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдЕрднреА рднреА рдЙрди рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреВрд░реЗ рдмрд┐рдВрджреБ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ! рдХрдорд╛рдиред

рдЖрдкрдХреЛ рдХрд┐рди рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХреНрдпреЛрдВ?

@ romero126 рдЕрдм рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрд┐ рд╢рдХреНрддрд┐рдпрд╛рдБ рдпрд╣рд╛рдБ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ ?

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЛрдЪрд╛ рдерд╛, рдХрд┐ рдЖрдк рдкрд╛рд╡рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдХрднреА-рдХрднреА рдЧреБрд╕реНрд╕рд╛ рдЖрддрд╛ рд╣реИ, рдХрд┐ рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рдирдИ рд░реВрдкрд░реЗрдЦрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ...), рд▓реЗрдХрд┐рди рдЕрдм рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@TSlivede , рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рд╡рд╛рдХреНрдпрдЧрдд рд░реВрдк рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдмреЛрдЭрд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рд╕рд╣рдордд рд╣реБрдПред

рдПрдХ рдореМрдЬреВрджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, # 2337, рдЬреЛ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдпрд╣ рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ @lzybkr рднреА Rust-like _single-line _ (- https: // github ) рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ

# `ins` is `Invoke-NativeShell`
ins @' python -c 'print("hi")' | cat -n '@

рднрд╛рдЧрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ _multiple_ ' @ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рдЯрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ (рдЬреИрд╕реЗ, @'' can use @' here ''@ ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдпрд╣ PowerShell рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА, рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЬреЛ Invoke-NativeShell рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдЧрд╛ред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ # 2337 рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдФрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдореИрдВрдиреЗ # 13204 рдореЗрдВ рдПрдХ

рднрд╛рдЧрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХрдИ рдмрд╛рд░ рджреЗрдЦрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдореЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрддрдХ рдХреЛ рднрд╛рдЧрдиреЗ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрдХреЗрддрдХ рдХреЛ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЙрд╕ рдореЛрдб рдХреЛ рдЙрд╕ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

рдЖрдЬ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд░реВрдк рдПрдХрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИ:

  • ' : рдПрдХрд▓-рдЙрджреНрдзрд░рдг рдЯреЛрдХрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
  • ' : рдПрдХрд▓-рдЙрджреНрдзрд░рдг рдЯреЛрдХрди рд╕рдорд╛рдкреНрддрд┐
  • '' : рдПрдХрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рднреАрддрд░ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рд▓рд┐рдЦреЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рднрд╛рдЧрдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • --% рдСрдкрд░реЗрдЯрд░ рдЕрдкрдиреЗ рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ( | , && , || , ; , newline) рдФрд░ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рднреАрддрд░ (рдЙрдирдХреЗ ' рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реБрдП)
  • Herestrings рдФрд░ рд╕рд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • рд╕рд░рдгреА рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ (рд╢рдмреНрджрд╢рдГ рдЖрд░рдВрдн рдХрд░реЗрдВ)
  • рд╕рд░рдгреА рдХреЛ рдЕрд▓рдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдирдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░реЗрдВ)
  • рдХреИрд╕реЗ рдЕрдВрдд рд╕рд░рдгреА (рдЕрдВрдд рд╢рдмреНрджрд╢рдГ рдореЛрдб)

(рдпрд╣ * nix рдкрд░ рдПрдХ рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ exec рдПрдХ рд╕рд░рдгреА рдХреА рдЙрдореНрдореАрдж рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рд░рдгреА рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ CommandLineToArgvW рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░реЗрдВред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рджреЛ рднрд╛рдЧрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

  • рд╕рд░рдгреА рд╡рд┐рднрд╛рдЬрдХ рд╢рд╛рдмреНрджрд┐рдХ
  • рд╕рд░рдгреА рдХрд╛ рдЕрдВрдд рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐:

  • --% рдХрдорд╛рдВрдб рдирдИ рд╡рд░реНрдмрдЯреАрдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
  • рд╣рдо рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? newline рдФрд░ ; рд╢рд╛рдпрдж?
  • рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реНрдХ рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж?

рдлрд┐рд░ рд╕рд╡рд╛рд▓ рд╣реИрдВ:

  • рд╣рдо рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ ; рдпрд╛ рдиреНрдпреВрд▓рд╛рдЗрди рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ?
  • рд╣рдо рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ?

рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдПрд╕рдЯреА рд╣реИред рдЪреВрдВрдХрд┐ PowerShell рдХреЛ рджреЗрд╢реА рдЧреЛрд▓реЗ рдореЗрдВ рдПрдПрд╕рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдиреА рд╣реБрдИ рд╣реИред

рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдПрд╕рдЯреА рд╣реИ

рдЖрдкрдиреЗ рдЗрд╕ рджрд╛рд╡реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд╛рд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдкрд░ PowerShell рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдПрд╕рдЯреА рдмрдирд╛рддрд╛ рд╣реИ (рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХрдм рд╣рд▓ рд╣реЛрддрд╛ рд╣реИ)

https://github.com/PowerShell/PowerShell/blob/f82f74d89811e91613a7450e536d652c5d8f784e/src/System/anM.Automation/engine/parser/Parser.cs#L6391 -L6634

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ (рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рддрд░реНрдХреЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рдПрдХ рдРрд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ PowerShell рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

> { ping 192.168.0.1 }.Ast.EndBlock.Statements[0].PipelineElements[0].CommandElements

StringConstantType : BareWord
Value              : ping
StaticType         : System.String
Extent             : ping
Parent             : ping 192.168.0.1

StringConstantType : BareWord
Value              : 192.168.0.1
StaticType         : System.String
Extent             : 192.168.0.1
Parent             : ping 192.168.0.1

рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдпрд╣рд╛рдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

https://github.com

рдФрд░ рдлрд┐рд░ рдпрд╣рд╛рдБ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдордВрдЧрд╡рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдиреЛрдЯрд┐рд╕ Expression.NewArrayInit(typeof(CommandParameterInternal[]), pipelineExprs) рд╣реИ рдЬрд╣рд╛рдБ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ):

https://github.com/PowerShell/PowerShell/blob/f82f74d89811e91613a7450e536d652c5d8f784e/src/Src/anystem.Automation/engine/parser/Compiler.cs#L3798 -L3805805

рд░рдирдЯрд╛рдЗрдо рдкрд░, рд╕рдВрдХрд▓рд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдкрд░, рдпрд╣ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдХреЙрд▓ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдХреЙрд▓ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ:

https://github.com/PowerShell/PowerShell/blob/f82f74d89811e91613a7450e536d652c5d8f784e/src/System/anystem.Automation/engine/runtime/Operations/MiscOps.cs#L293L3123

рдЖрдЦрд┐рд░рдХрд╛рд░, рдЬрдм рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рддрд░реНрдХ рд╕рд░рдгреА NativeCommandParameterBinder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрддреА рд╣реИ:

https://github.com/PowerShell/PowerShell/blob/f82f74d89811e91613a7450e536d652c5d8f784e/src/System.anit.Automation/engine/NativeCommandParameterBinder.cs#L69 -L137137

рд╡рд╣ рддрд░реНрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдПрд╕рдЯреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ NativeCommandProcessor рдореЗрдВ рддрд░реНрдХ рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИ:

https://github.com

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .NET рдЪрд╛рд▓рд╛рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдкреНрд░реЛрд╕реЗрд╕ рдЗрдиреНрд╡реЛрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреБрд░рд╛рдиреЗ "рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕рднреА рддрд░реНрдХ" рдХреЗ рдмрдЬрд╛рдп .NET рдХреЛрд░ рдореЗрдВ рдирдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрд░реИ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ .NET рдЗрдВрд╡реЛрдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рджреЗрддрд╛ рд╣реИред рдПрдХ рдордВрдЪ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдЬрд░реВрд░рдд рдХреЗ рд░реВрдк рдореЗрдВред

рд▓реЗрдХрд┐рди рд╣рдо рдЙрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо fork / exec рд╕реАрдзреЗ * nix рдкрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣рдо рдпрд╣рд╛рдБ рдХрд░рддреЗ рд╣реИрдВ:

https://github.com/PowerShell/PowerShell/blob/f82f74d89811e91613a7450e536d652c5d8f784e/src/powershell-Program.cs#L268 -L330

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ exec рдПрдХ рд╕рд░рдгреА рд╣реИ - рд╣рдордиреЗ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ syscall рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рдПрдХ рд╢рдмреНрджрд╢рдГ рддрд░реНрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИред

@rjmholt :

_Functually_, рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, _ рдЕрдЧрд░ рдЖрдк рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдирдП Invoke-NativeShell / ins cmdlet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдпрд╣рд╛рдВ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ _рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рди рдХрд┐ рдПрдХ рд╕рд░рдгреА: рдпрд╣ рдПрдХ _entire рдХрдорд╛рдВрдб рд▓рд╛рдЗрди_ рд╣реИ - рд▓рдХреНрд╖реНрдп рд╢реЗрд▓реНрдмреА рдкрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рдФрд░ рдпрд╣ PowerShell рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рдЕрдЬреАрдм рд░реВрдк рд╕реЗ --% рдЬреИрд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде

рд╡рд╣ рд╕рдм Invoke-NativeShell рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реА рдореВрд▓-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЕрдкрдиреЗ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрд╢реА рд╢реЗрд▓ рдореЗрдВ рд╣реИ:

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд╕-рдХреЗ рд░реВрдк рдореЗрдВ, _as рдкреВрд░реЗ_, рддрд░реНрдХ рдХреЗ рджреВрд╕рд░реЗ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ _array_ exec ( -c рдХреЗ рд╕рд╛рде рдкреНрд░рдердо рддрд░реНрдХ-рд╕рд░рдгреА рддрддреНрд╡, рдФрд░ /bin/sh рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛) printf "'%s'" foo | cat -n рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╢рдмреНрджрд╢рдГ рд╕рд╛рдордЧреНрд░реА рдЧреБрдЬрд░рддреА рд╣реИ ( .ArgumentList рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдЯ рдХрд░реЗрдВ, .Arguments ; ' рдХреА рджреЛрд╣рд░реАрдХрд░рдг рдХреЗрд╡рд▓ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ):

    • $psi = [Diagnostics.ProcessStartInfo]::new('/bin/sh'); $psi.ArgumentList.Add('-c'); $psi.ArgumentList.Add('printf "''%s''" foo | cat -n'); [Diagnostics.Process]::start($psi).WaitForExit()
  • рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдЗрд╕ рдХрд╛ рдорддрд▓рдм рд╣реИ: рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cmd рдХреЗ quirks, рднрд░рдиреЗ lpCommandLine рдХреЗ рддрд░реНрдХ CreateProcess (рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рдХрд╛рд░ lpApplicationName рдХрд╛ рдореВрд▓реНрдп рдорд╛рдирд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ ComSpec , рдЬреЛ cmd.exe рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: "/c " + cmdLine , рдЬрд╣рд╛рдВ cmdLine рдкреВрд░реЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ; рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде .NET рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ echo a^&b & ver рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╢рдмреНрджрд╢рдГ рд╕рд╛рдордЧреНрд░реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╣реИ:

    • $psi = [Diagnostics.ProcessStartInfo]::new($env:ComSpec); $psi.Arguments = '/c ' + 'echo a^&b & ver'; [Diagnostics.Process]::start($psi).WaitForExit()

      • @ yecril71pl , рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрдорд╛рдВрдб-рдкреНрд░реЙрдореНрдкреНрдЯ рдпрд╛ рдмреИрдЪ-рдлрд╝рд╛рдЗрд▓ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ: рдпрд╣ рдкреВрд░реНрд╡ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдкрд╛рдпрдерди os.system() ; (рд╢рд╛рдпрдж рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг) рдирд┐рд╣рд┐рддрд╛рд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк % рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗ, рдФрд░ for рд▓реВрдк рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ % (рдЬреИрд╕реЗ, %i %%i %i рдмрдЬрд╛рдп %%i ); рдФрд░ рдпрд╣ рдХрд┐ рдЖрдкрдХреЛ рд▓реВрдк-рдмреЙрдбреА рдХрдорд╛рдВрдб @ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЧреВрдВрдЬрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ, for %i in (*.txt) do <strong i="56">@echo</strong> %i )ред

рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛_ рдХреЗ рд▓рд┐рдП _transparent рд╣реЛрдЧреА, рддрд╛рдХрд┐ рдЙрди рд╕рднреА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рджреЗрд╢реА-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди _verbatim_ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреЗрд╡рд▓ _PowerShell рдХреЗ_ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

ins @'<newline>...<newline>'@ рдХреЗ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _can_ рдЕрдкрдиреА рдореВрд▓-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ: рдКрдкрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореМрдЬреВрджрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ - _interpolating_ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлреЙрд░реНрдо ( @"<newline>...<newline>"@ ) - рд╕рд╛рде рд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ _PowerShell_ рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ --% рдХреА рдкреНрд░рдореБрдЦ рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ)ред

рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрдЪреНрдЪреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ_ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╣реИ, рдЬреЛ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ _separate рд╣реИ (рдФрд░ рдЗрд╕рдХрд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрд░реНрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ); рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, Invoke-NativeShell рдХреЙрд▓ рддрдм _more рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ_ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( Invoke-NativeShell / ins рдХрдорд╛рдВрдб):

# ALREADY WORKS: Literal here-string
ins @'
python -c 'print("hi")' | cat -n
'@

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирдИ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдХрдЪреНрдЪреЗ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде рдЖрдк рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

# PROPOSED, more convenient syntax: new raw literal.
ins @' python -c 'print("hi")' | cat -n '@

рдпрджрд┐ рдЗрд╕ рдирдП рдХрдЪреНрдЪреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ # 13204 рдореЗрдВ рдХрд░реЗрдВ, рдпрд╣рд╛рдБ рдирд╣реАрдВред

рдЗрд╕рд▓рд┐рдП рдореВрд▓ рдЗрд░рд╛рджреЗ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ /bin/sh -c '<command>' + cmd рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрд╕реНрдХреЗрдк рд▓реЙрдЬрд┐рдХ рдХреЗ рд╕рд╛рде рдкреВрдЫ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдФрд░ рдкрд╛рд░реНрд╕рд░ рдФрд░ рджреЗрд╢реА рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЖрдзрд╛рд░ рдмрдирд╛рдпрд╛ рдерд╛, рдФрд░ .NET рдХреЗ ProcessStartInfo.Arguments рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрджреНрдзрд░рдг рдкрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдерд╛ ред

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Arguments рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рд░реНрдл рд╢рдмреНрджрд╢рдГ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддреА рд╣реИ ред рддреЛ рд╣рдо рд╕рднреА рдХреЛ рд╕реАрдзреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ (рдпрд╣ рд╕рд┐рд░реНрдл рдЯреЛрдХрди рд▓реЙрдЬрд┐рдХ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдореБрдЭреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдирдпрд╛ рдЖрджреЗрд╢ рд╣реИ, ins рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВред .NET рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдереЛрдбрд╝рд╛ рдЪрддреБрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@Rjmholt рдХреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ https://github.com/PowerShell/PowerShell/issues/13068#issuecomment -660231641

рдПрдХ рдирдпрд╛ рдореЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрддрдХ рдХреЛ рднрд╛рдЧрдиреЗ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдЯреЛрдХрди рдХреЛ рд╕рдВрдХреЗрддрдХ рдХреЛ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЙрд╕ рдореЛрдб рдХреЛ рдЙрд╕ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪ рд╕рдХрддреА рд╣реИред

-% рдСрдкрд░реЗрдЯрд░ рдЕрдкрдиреЗ рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (!, &&, ||,;, newline) рдФрд░ рдЗрд╕рдХреЗ рднреАрддрд░ рддрд╛рд░ (рдЙрдирдХреЗ 'рдЕрдХреНрд╖рд░) рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

--% рдмрд╛рдд рдХрд░рддреЗ рд╕рдордп, рдХреНрдпрд╛ рдЖрдк рдореМрдЬреВрджрд╛ --% рд╕реНрд╡рд┐рдЪ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм --% рдХреЛ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдкреНрд░рд╕реНрддрд╛рд╡ рдореВрд▓ рд╢реЗрд▓ (рд╢ рдпрд╛ рд╕реАрдПрдордбреА) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ --% рдмрд╛рдж рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреИрд╕реЗ sh -c ... ред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рдХреНрддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ _an array syntax_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рд╣рдо рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? newline рдФрд░; рд╢рд╛рдпрдж?
рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реНрдХ рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ? 'рд╕реНрдкреЗрд╕' рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдмрд┐рдЯрд┐рдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирдИрд▓рд╛рдЗрди рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рддрд░реНрдХ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, \n рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЖрдк рд╕реАрдзреЗ рдорд╛рд░ рдЦрд╛рддреЗ рд╣реИрдВред

рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдПрд╕рдЯреА рд╣реИ

рдЖрдкрдиреЗ рдЗрд╕ рджрд╛рд╡реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд╛рд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдкрд░ PowerShell рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдПрд╕рдЯреА рдмрдирд╛рддрд╛ рд╣реИ (рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХрдм рд╣рд▓ рд╣реЛрддрд╛ рд╣реИ)

рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рдПрдПрд╕рдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ, @rjmholt

.NET рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдВрдЧреЗ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдЯрд┐рдкреНрдкрдгреА рд╢реЛ рдореЗрдВ рдХрдорд╛рдВрдб: рд╡рд┐рдВрдбреЛрдЬ рдкрд░, .Arguments -рдХрдорд╛рдВрдб-рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдереНрд░реВ рдкрд╛рд╕-рдереНрд░реВ WinAPI рдХреЗ рд▓рд┐рдП; рдпреВрдирд┐рдХреНрд╕ рдкрд░, рддрд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП .ArgumentList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ _array_ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ exec рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдкрд╛рд╡рд░рд╢реЗрд▓ рдПрдПрд╕рдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЦреИрд░ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдПрдПрд╕рдЯреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рдЬреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдПрдПрд╕рдЯреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

_Functually_, рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, _ рдЕрдЧрд░ рдЖрдк рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдирдП Invoke-NativeShell / ins cmdlet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ Invoke-NativeShell cmdlet рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ --% ред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рд╕реБрдиреА рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ --% + Ctrl + v рд╕реЗ рдЕрдзрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрдВрдЯрд░рдкреЛрд▓ рдХрд░рдиреЗ рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреЛрдЭ рд╣реИ (_I рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ins рд▓рдЧрддрд╛ рд╣реИ) --% _) рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рд╕реБрдиреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ --% + Ctrl + v рд╕реЗ рдЕрдзрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрдВрдЯрд░рдкреЛрд▓ рдХрд░рдиреЗ рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреЛрдЭ рд╣реИ (_I рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ins рд▓рдЧрддрд╛ рд╣реИ) --% _) рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рд╢рд╛рдпрдж PSRL рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЪрд┐рдкрдХрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдШреЗрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╕рдорд╛рди, рдкреАрдПрд╕рдЖрд░рдПрд▓ CommandAst рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ ins рдФрд░ рдареАрдХ рд╕реЗ рдЪрд┐рдкрдХрд╛рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рдЦреИрд░ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдПрдПрд╕рдЯреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рдЬреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдПрдПрд╕рдЯреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЬрд╝рд░реВрд░ рд▓реЗрдХрд┐рди рдкреЗрдбрд╝ рддреБрдЪреНрдЫ рд╣реЛрдЧрд╛ред рдпрд╣ рдЙрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

Cmd.exe рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ

рдпрд╣ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ, @ daxian-dbw
рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ, @ рдирд┐рд╖реНрдард╛ рд╕реЗ ред

рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ рдпрд╣рд╛рдБ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд┐рднрдХреНрдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреЛрдЭ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ _plus_ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ - --% - @"<newline>...<newline>"@ рдЖрдкрдХреЛ рд╕реАрдзреЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ _PowerShell_ рдЪрд░ рдФрд░ рднрд╛рд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЬрд╛рдирдирд╛ рдХреЗ рдПрдХрд▓-рдХреЛрдЯреЗрдб (рд╢рдмреНрджрд╢рдГ) рдФрд░ рдбрдмрд▓-рдХреЛрдЯреЗрдб (interpolating) рддрд╛рд░ рдФрд░ рдЪрдпрдирд╛рддреНрдордХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ ` -escaping рдХреА $ , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЙрдиреНрдирдд) рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд PSReadLine рд╕реБрд╡рд┐рдзрд╛ рдХреЛ @'<newline>...<newline>'@ (рд╢рдмреНрджрд╢рдГ) рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЕрдВрддрддрдГ, рд╣рдо рдРрд╕реА рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ PowerShell рдХреА рдЕрджреНрд╡рд┐рддреАрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЙрдирдХреА рд╕рдордЭ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╡реЗ __ рдХреА рд╢рдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ PowerShell рдХреЗ _own_ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд╛ _cross-platform_ рджреНрд╡рд╛рд░рд╛ рд╣реИ, рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдЙрд╕ рдЕрдВрдд рддрдХ, # 1995 рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

  • --% _ ред

  • Invoke-NativeShell ( ins ) рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд --% рдСрдкрд░реЗрдЯрд░ рдХреА рд╕рднреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ "рдЯреНрд░реИрдк рдбреЛрд░" рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ

  • --% рдХреЛ рдЕрдкрдиреЗ рдореВрд▓ _argument_ рдлреЙрд░реНрдо рдореЗрдВ рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ _Windows-only_ рд╕реБрд╡рд┐рдзрд╛ (рдЬреЛ рдпрд╣ _effectively_ рд╣реИ, рднрд▓реЗ рд╣реА _technically_ рд╣реИ) рдирд╣реАрдВ рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдП - рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ - рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

    • рдПрдХ рдмрд╛рд░ # 1995 рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, --% рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп Windows_ рдкрд░ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдЖрдкрдХреЛ msiexec рдЬреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЙрджреНрдзрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрдВрдЯреНрд░рд╛-рддрд░реНрдХ рдЙрджреНрдзрд░рдг рдХреЗ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкред

рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрдирд╢реНрдЪ v7.x рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рджреЗрд╢реА рдЖрджреЗрд╢ рдЧрд▓рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдВрдж рдХрд░реЛ, рдХреА рддрд░рд╣ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ set -e рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЖрд░рдПрдлрд╕реА ред рдпрджрд┐ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди Invoke-NativeCommand , рддреЛ рдХреНрдпрд╛ Invoke-NativeShell рд╕рд╛рде рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛?

рдмрд╕ рдлрд┐рд▓реНрдо рдХреЛ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЦреЗрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рддрдирд╛ рдореИрдВ рдХреЙрд▓ рджреЗрд╢реА рдлреАрдЪрд░ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдмрд┐рд▓реНрдб рдФрд░ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рддреНрд░реБрдЯрд┐ рд╣реЛ, рдЬрдм рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП msbuild, cl, cmake, Conan, npm, рдЖрджрд┐ рдФрд░ рдЙрди рдореВрд▓ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рд╣рд░ рд╕рдордп $ LASTEXITCODE рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдбред рдпрджрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рд╡рд░реАрдпрддрд╛ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдЬреИрд╕реЗ $PSNativeCommandInErrorActionPreference рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ - рдпрд╣ рдПрдХ рдореВрд▓ "рдХрдорд╛рдВрдб" рдФрд░ рд╕рднреА рд╣реИ?

рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рд╕реБрдиреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ --% + Ctrl + v рд╕реЗ рдЕрдзрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрдВрдЯрд░рдкреЛрд▓ рдХрд░рдиреЗ рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреЛрдЭ рд╣реИ (_I рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ins рд▓рдЧрддрд╛ рд╣реИ) --% _) рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рд╢рд╛рдпрдж PSRL рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЪрд┐рдкрдХрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдШреЗрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд╕рдорд╛рди, рдкреАрдПрд╕рдЖрд░рдПрд▓ CommandAst рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ ins рдФрд░ рдареАрдХ рд╕реЗ рдЪрд┐рдкрдХрд╛рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдмрд╛рд░реЗ рдореЗрдВ:

$c = gcm ins
& $c ...

PSRL рдПрдХ рдХрдард┐рди рд╕рдордп рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрд▓рд┐рдпрд╛рд╕ рдЗрдиреНрд╕ рдХреЛ рдЗрдирд╡реЙрдЗрд╕-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрдорд╛рдВрдбрд┐рдирдлреЛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрд░реНрдЧреНрд╕ рдХреЛ рдбрд┐рдореБрдирд┐рдЬ рдХрд░реЗрдВ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдирдХрд▓реА рдХрдорд╛рдВрдб рдХреЛ рдЖрд╡рд░рдг рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдБ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ рдпрд╣рд╛рдБ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд┐рднрдХреНрдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреЛрдЭ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ _plus_ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ - --% - @"<newline>...<newline>"@ рдЖрдкрдХреЛ рд╕реАрдзреЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ _PowerShell_ рдЪрд░ рдФрд░ рднрд╛рд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдореИрдВ рдЖрдкрдХреЛ @ mklement0 рдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --% рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдерд╛ред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдирдХрд▓реА рдХрдорд╛рдВрдб рдХреЛ рдЖрд╡рд░рдг рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдБ рдХреЛрдИ рдирдХрд▓реА рдХрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ bona fide cmdlet, Invoke-NativeShell , рдЬреЛ ins ред

gcm ins ( Get-Command ins ) ins alias рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ [System.Management.Automation.AliasInfo] рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдмрд╛рдж рдореЗрдВ & рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЗ рд▓рд┐рдП

рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрд┐рд▓рдХреБрд▓ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк gcm ( Get-Command ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреБрдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ _yourself_ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛ _optional рд╕реБрд╡рд┐рдзрд╛ рдХрдорд╛рдВрдб scaffolding_ рдЬреЛ PSRL _could_ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдпрджрд┐ @SeeminglyScience рдХрд╛ рд╕реБрдЭрд╛рд╡ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:

$c = gcm ins
& $c @'
python -c 'print("hi")' | cat -n
'@

рдпрд╛, рдпрджрд┐ # 13204 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирдП рдХрдЪреНрдЪреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

$c = gcm ins
& $c @' python -c 'print("hi")' | cat -n '@

рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЖрдк рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдХрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреА рдХрд░реЗрдЧрд╛: рдмрд╕ рдХреБрд▓ '...' рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░ рдПрдореНрдмреЗрдбреЗрдб ' рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░реЗрдВ:

$c = gcm ins
& $c 'python -c ''print("hi")'' | cat -n'

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --% рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

  • --% рдХреНрд▓реЛрдЬрд┐рдВрдЧ рд╕реАрдорд╛рдВрдХрдХ рдХреА рдХрдореА рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ (...) рд╕рдВрд▓рдЧреНрдирдХ _not_ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдлреНрд░рдВрдЯ-рдХрд▓реЗрдХреНрд╢рдиред рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп _streaming_ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг)ред

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░, --% _both_ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдПрдХрддрд░рдлрд╛) $ рдПрдХ PowerShell рдореЗрдЯрд╛рдЪреИрдХрд░ _and_ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ POSIX- рд╢реЗрд▓ рдореЗрдЯрд╛рдЪреИрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВред

рджреЛрдмрд╛рд░рд╛: рд╡рд╣рд╛рдБ _no_ рдХреЗ рд▓рд┐рдП рдФрдЪрд┐рддреНрдп рд╣реИ рдФрд░ PowerShell рдореЗрдВ _different рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕_ рдХреЛ рдЬреВрддрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ - рджреЗрд╢реА-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди _as a string_ рдкрд╛рд╕ рдХрд░реЗрдВ, ins , рдФрд░ рд╕рднреА рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдБ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдБрдЧреАред

рдЖрд╣реНрд╡рд╛рди-рдореВрд▓рдирд┐рд╡рд╛рд╕реА рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ PowerShell рджреЗрд╢реА рд╢реЗрд▓ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдзрд╛рд░рдгрд╛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рд░рд╣реЗрдЧреА?

@ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ README рдпрд╛ рдХреБрдЫ рдФрд░ рд╕реЗ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рд╡реЗ ins SPACE CTRL + v рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреБрдЫ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

@ mklement0

рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ PowerShell рдХреЗ _own_ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд╛ _cross-platform_ рджреНрд╡рд╛рд░рд╛ рд╣реИ, рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдЙрд╕ рдЕрдВрдд рддрдХ, # 1995 рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ

рдпрд╣ ins / --% рд╕рд╣реА рдкрд░ рдЪрд░реНрдЪрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИ? рдпрджрд┐ рдЖрдк рдЕрд╕рд╣рдордд рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирдпрд╛ рдХрдорд╛рдВрдб / рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛?

@SeeminglyScience , рд╣рд╛рдБ, рдпрд╣ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг # 1995 рдХрднреА рднреА рдпрд╣рд╛рдВ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рдерд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреБрд▓ рдЧрдпрд╛), рдФрд░ рдпрд╣рд╛рдВ рдУрдкреА рдЕрднреА рднреА рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ ("рдпрд╣ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рднреА рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:") ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрд╕ ins / --% _not_ рдкрддрд╛ # 1995, рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рддрддреНрдХрд╛рд▓ рд╕реНрд╡рдпрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
(рдХреЗрд╡рд▓ рддрднреА рдЬрдм PowerShell рдХрд╛ рдЕрдкрдирд╛ рддрд░реНрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛ, рдХреНрдпрд╛ рд╣рдо рдЕрдЪреНрдЫреЗ рд╡рд┐рд╡реЗрдХ рдореЗрдВ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдЦреЗрдВ рдФрд░ PowerShell рдХреЗ рдЕрдкрдиреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЧрд▓реЗ рд▓рдЧрд╛рдПрдВ - рдЬреЛ рд╣рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред)

@ SP3269 , рд╣рдо рдЙрд╕ рдкреБрд▓ рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ we

рдкрд░рдиреНрддреБ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ:

рдпрджрд┐ рдЖрдк "рджреЗрд╢реА" рдХреЗ рд░реВрдк рдореЗрдВ "рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо [рдкрд░рд┐рд╡рд╛рд░]" рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдирд╛рдо рдЕрднреА рднреА рдлрд┐рдЯ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрднреА рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдмрди рдЬрд╛рдП (рдпрд╣рд╛рдВ рдЙрдореНрдореАрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдпрд╣ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рднрд╡рд┐рд╖реНрдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ)ред

рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ:

  • Invoke-[System]DefaultShell рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдирд╛рдо рд╣реЛрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, PowerShell рдХреЛ рдХрднреА рднреА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП), рд▓реЗрдХрд┐рди "рджреЗрд╢реА" рдкрд╛рд╡рд░рд╢реЗрд▓ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╢рдмреНрдж рд╣реИред

  • Invoke-LegacyShell рдХрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдХреБрдЫ рдФрдЪрд┐рддреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпреВрдирд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рд╢рдмреНрдж рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрдпрд╛ рдХрд░реЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рдХреЗ рдЗрд░рд╛рджреЛрдВ, рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдореБрджреНрджреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕ рднреНрд░рдо рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо ( @ mklement0 рдФрд░ I, рдХрдо рд╕реЗ рдХрдо) рдЗрд╕реЗ рдПрдХ рд╣реА рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЬреЛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рдерд╛, рд╡рд╣ --% рдХрд╛ рдЙрдкрдпреЛрдЧ _parser_ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдХреЙрд▓ & рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ --% рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рджреВрд╕рд░реА рдУрд░, рдорд╛рдЗрдХрд▓ рдХреЛ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рдмреНрд░реЛрдХрд░ рдФрд░ рддрд░реНрдХ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП ins рдХреЛ рдПрдХ рдбреНрд░реЙрдк-рдЗрди cmdlet рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкрд╛рд╡рд░рд╕реНрд▓реЗрдпрд░ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП / рдпрд╣рд╛рдБред -рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬреЛ рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ --% рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред)

-% рдореЗрдВ рдПрдХ рд╕рдорд╛рдкрди рд╕реАрдорд╛рдВрдХрдХ рдХреА рдХрдореА рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ

рдпрд╣ рдмрд┐рдВрджреБ рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ ins / invoke-nativecommand рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХрд╛ рдЕрднрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрд▓рдПрдЪрдПрд╕ рд╕реЗ рдкрд░рд┐рд╕реАрдорди рдпрд╛ рдлрд╝реАрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рдХрдерди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреЛ рднреА рд░рд╛рд╕реНрддрд╛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреЗрд╢реА рд╢реЗрд▓ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ COMSPEC рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЪреВрдХ %systemroot%\system32\cmd.exe ) рдФрд░ SHELL рд▓рд┐рдирдХреНрд╕ рдкрд░ ( /bin/bash рд▓рд┐рдП рдЪреВрдХ) - рдпрджрд┐ рд╢реЗрд▓ ' t рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ, рд╣рдореЗрдВ /bin/sh рд▓рдХреНрд╖реНрдп рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╣реИред)

-% рдореЗрдВ рдПрдХ рд╕рдорд╛рдкрди рд╕реАрдорд╛рдВрдХрдХ рдХреА рдХрдореА рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ

рдпрд╣ рдмрд┐рдВрджреБ рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ ins / invoke-nativecommand рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХрд╛ рдЕрднрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрд▓рдПрдЪрдПрд╕ рд╕реЗ рдкрд░рд┐рд╕реАрдорди рдпрд╛ рдлрд╝реАрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рдХрдерди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк cmd --% /c someapp | someOtherApp рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ cmd рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ; PowerShell рдЕрднреА рднреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреИрд╕реЗ && рдФрд░ || рдЬреЛ рдЕрдиреНрдпрдерд╛ рдпреВрдирд┐рдХреНрд╕ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╡рд░рд╕реНрд▓реЗрдХ рдЯреЛрдХрди рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рддрд░реНрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред

рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╢реЗрд▓ ( /bin/bash рд▓рд┐рдП рдЪреВрдХ)

рдирд╣реАрдВ: рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ _system_ рдЦреЛрд▓ _invariably_ /bin/sh ред
рдпрд╣ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП _user_ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ ( $env:SHELL рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд) рд╕реЗ рдЕрд▓рдЧ рд╣реИ - рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рддреЛ _PowerShell_ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╢реЗрд▓ рд╣реИ, # 12150 рджреЗрдЦреЗрдВ), рдЬреЛ рдХрд┐ (a) рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ (b) рдЕрдХреНрд╕рд░ _defaults__ /bin/bash , рд▓реЗрдХрд┐рди рд╡рд╣ рднреА рдПрдХ рджрд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ macOS рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ /bin/zsh рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ COMSPEC рдХрд░реЗрдВ

рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ (рдХрдорд╛рдВрдб рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ - рдореИрдВрдиреЗ рдКрдкрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдореВрдирд╛ рдХрдорд╛рдВрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрдирд╢реНрдЪ v7.x рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рджреЗрд╢реА рдЖрджреЗрд╢ рдЧрд▓рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдВрдж рдХрд░реЛ, рдХреА рддрд░рд╣ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ set -e рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЖрд░рдПрдлрд╕реА ред рдпрджрд┐ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди Invoke-NativeCommand , рддреЛ рдХреНрдпрд╛ Invoke-NativeShell рд╕рд╛рде рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛?

рдмрд╕ рдлрд┐рд▓реНрдо рдХреЛ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЦреЗрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рддрдирд╛ рдореИрдВ рдХреЙрд▓ рджреЗрд╢реА рдлреАрдЪрд░ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдмрд┐рд▓реНрдб рдФрд░ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рддреНрд░реБрдЯрд┐ рд╣реЛ, рдЬрдм рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП msbuild, cl, cmake, Conan, npm, рдЖрджрд┐ рдФрд░ рдЙрди рдореВрд▓ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рд╣рд░ рд╕рдордп $ LASTEXITCODE рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдбред рдпрджрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рд╡рд░реАрдпрддрд╛ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдЬреИрд╕реЗ $PSNativeCommandInErrorActionPreference рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ - рдпрд╣ рдПрдХ рдореВрд▓ "рдХрдорд╛рдВрдб" рдФрд░ рд╕рднреА рд╣реИ?

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП Start-NativeExecution рд╣рдорд╛рд░реЗ build рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдб рдкрд░ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк Start-NativeExecution Invoke-NativeShell рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ PR # 3523 рдЬреИрд╕рд╛ рдХреБрдЫ рдЗрд╕ рдХреЙрд▓ рджреЗрд╢реА рдлреАрдЪрд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЙрд▓ рдХреЛ рдореВрд▓ рд╣рд╡рд╛рдУрдВ рдХреЛ cmdlet (Invoke-NativeShell рдмрдирд╛рдо -%) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ -ErrorAction Stop рдХреЛ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдб рдкрд░ рдлреЗрдВрдХрдиреЗ (рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

-% рдореЗрдВ рдПрдХ рд╕рдорд╛рдкрди рд╕реАрдорд╛рдВрдХрдХ рдХреА рдХрдореА рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ

рдпрд╣ рдмрд┐рдВрджреБ рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ ins / invoke-nativecommand рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХрд╛ рдЕрднрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрд▓рдПрдЪрдПрд╕ рд╕реЗ рдкрд░рд┐рд╕реАрдорди рдпрд╛ рдлрд╝реАрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рдХрдерди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк cmd --% /c someapp | someOtherApp рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ cmd рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ; PowerShell рдЕрднреА рднреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреИрд╕реЗ && рдФрд░ || рдЬреЛ рдЕрдиреНрдпрдерд╛ рдпреВрдирд┐рдХреНрд╕ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╡рд░рд╕реНрд▓реЗрдХ рдЯреЛрдХрди рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рддрд░реНрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред

рд╣рд╛рдВ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ @ vexx32 рдХреЛ рд╕рдордЭрддрд╛ --% рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдирд╣реАрдВ рд╣реВрдВ) - рд╣рдо рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдирд╣реАрдВ? рдореБрдЭреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдпрд╣рд╛рдБ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? :)

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛, рдКрдкрд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛, рд╣рдо & --% рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╕рдХрддреЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ ред рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реЗрд▓ рдХреЗ рд╕реНрдкрд╖реНрдЯ рджреЗрд╢реА рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рднреНрд░рдо рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реНрд░реЛрдд рд╣реИ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреБрднрд╡реА рд╡рд┐рдВрдбреЛрдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП - рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ cmd.exe (рдПрдХ рд╢реЗрд▓) рдХреЛ рдЕрдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп "рд░рди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдпрд╣реА рдмрд╛рдд linux / osx рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред

рд╣рд╛рдВ, рдореИрдВ _current_ рд╡реНрдпрд╡рд╣рд╛рд░ @ vexx32 рдХреЛ рд╕рдордЭрддрд╛ --% рдХреЗ _current_ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдирд╣реАрдВ рд╣реВрдБ) - рд╣рдо рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдирд╣реАрдВ? рдореБрдЭреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдпрд╣рд╛рдБ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? :)

рддреЛ --% рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкрд┐рдЪ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрдорд╛рдВрдб рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рд╣реЛрдЧрд╛, рддреЛ рдЗрд╕рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдм рдХреБрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ --% рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЗрд╢реА рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдб рдкрд░ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк Start-NativeExecution Invoke-NativeShell рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ PR # 3523 рдЬреИрд╕рд╛ рдХреБрдЫ рдЗрд╕ рдХреЙрд▓ рджреЗрд╢реА рдлреАрдЪрд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЙрд▓ рдХреЛ рдореВрд▓ рд╣рд╡рд╛рдУрдВ рдХреЛ cmdlet (Invoke-NativeShell рдмрдирд╛рдо -%) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ -ErrorAction Stop рдХреЛ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдб рдкрд░ рдлреЗрдВрдХрдиреЗ (рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ Start-NativeExecution { Invoke-NativeShell <strong i="10">@whatever</strong> } ред

рдпрд╣ рдмрд┐рдВрджреБ рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ ins / invoke-nativecommand рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХрд╛ рдЕрднрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрд▓рдПрдЪрдПрд╕ рд╕реЗ рдкрд░рд┐рд╕реАрдорди рдпрд╛ рдлрд╝реАрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рдХрдерди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

Invoke-NativeShell _need_ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдкрди рдкрд░рд┐рд╕реАрдорди рдХреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдХрдорд╛рдВрдб рд╣реИ, рдЬрдмрдХрд┐ --% рдХрд╛ рдЖрддрдВрдХ рдирд╣реАрдВ рд╣реИред

рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╢реЗрд▓ ( /bin/bash рд▓рд┐рдП рдЪреВрдХ)

рдирд╣реАрдВ: рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ _system_ рдЦреЛрд▓ _invariably_ /bin/sh ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдд рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╢реЗрд▓ рдЪреБрдирдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╣рд┐рдд, рдЕрдЧрд░ рдпрд╣ #! рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛред

Invoke-NativeShell рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ _CLI_ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЖрд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рди рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рдХрд╛ рдкрд░рд┐рдЪрдп рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ $0 (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрде) рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдп рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА /bin/sh рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреЛрдб-рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ, sh -c 'echo $0' foo )

    • (рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ: рд╢реЗрд▓рдмрдВрдЧ рд▓рд╛рдЗрди #!/bin/sh рд╕рд╛рде рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреВрд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ /bin/sh рд╕реАрдзреЗ
  • рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдПрдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди _would_ рдлрд╛рдпрджреЗ рд▓рд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЬреЛ $env:ComSpec рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдХрд░рддрд╛ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ % рдмрдЪрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред рдФрд░ for рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред

рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЛ рдПрдХ рд╢рд┐рд╖реНрдЯрд╛рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдСрдХреНрд╕ред рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рди рдкрдбрд╝реЗ), рд╡реИрдЪрд╛рд░рд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
-AsBatchFile рдПрдХ _opt-in_ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ cmd рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╣реБрдордд рдХреЛ _batch-file_ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ ( %%i %i рдмрдЬрд╛рдп рд▓реВрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ % %% рд░реВрдк рдореЗрдВ рдмрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рд╢рд╛рдпрдж рд╣рдореЗрд╢рд╛ рдПрдХ рдСрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ _on Windows_ (рдпреВрдирд┐рдХреНрд╕ рдкрд░ CLI рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХрд╛рддреЗ рд╕рдордп) рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ - рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред

@rkeithhill

рдореЗрд░реЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдореВрд▓-рдирд┐рд╡рд╛рд╕реА-рддреНрд░реБрдЯрд┐рдпреЛрдВ RFC рдХреЛ рдХреЗрд╡рд▓ # 1995 рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:

рджреЛрдиреЛрдВ PowerShell рдореЗрдВ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ (рдореВрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ) рдХреЛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХреЛрдВ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ) рдмрдирд╛рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрджрдореЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, _ рдЬреЛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП_ред

рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рд╣реЛрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ: _direct_ рдордВрдЧрд▓рд╛рдЪрд░рдг ( & рд▓рд┐рдП рдХреЗрд╡рд▓ _syntactic_ рдХрд╛рд░рдгреЛрдВ, рд╕реНрдерд┐рддрд┐рдЬрдиреНрдп рд░реВрдк рд╕реЗ), рди рдХрд┐ _via a cmdlet_ред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдХрднреА рднреА Invoke-NativeCommand cmdlet рдпрд╛ Start-NativeExecution cmdlet рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

(рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ: Start-NativeExecution рдХрд╛ рдирд╛рдо рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ build рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рд╣реИрдВ; Start рд╕рдВрдХреЗрдд _asynchronous_ рдСрдкрд░реЗрд╢рди, рдЬрдмрдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝рдВрдХреНрд╢рди _synchronous_ рд╣реИрдВ - рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ Start-Sleep https://github.com/MicrosoftDocs/PowerShell-Docs/issues/444) рдкрд░ред

рдЗрд╕рд▓рд┐рдП, Invoke-NativeShell рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: PowerShell, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдореВрд▓-рд╢реЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдирд┐рдХрд╛рд╕ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ $LASTEXITCODE рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ ( cmd / sh ) рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдлрд┐рд░ RFC рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрдВрддреНрд░ рдЙрд╕ рдкрд░ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрд░ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ (рдЬреИрд╕реЗ, рдпрджрд┐ $PSNativeCommandErrorAction = 'Stop' рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ $LASTEXITCODE nonzero рд╣реЛрдиреЗ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд╕рдорд╛рдкреНрддрд┐ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред )

(рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рддрд░рдл - рдпрд╣ рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдБ рдирд╣реАрдВ рд╣реИ: рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ _per-call_ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП: рдХреБрдЫ рдЗрд╕ рддрд░рд╣
/bin/ls nosuch || $(throw 'ls failed) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ /bin/ls nosuch || $(exit $LASTEXITCODE) (POSIX рд╢реЗрд▓ рдХреЗ /bin/ls nosuch || exit ); # 10967 рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ $(...) (рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛) рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдЪ рд╕рдХрддреЗ; рдЗрд╕реА рддрд░рд╣, $LASTEXITCODE рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╢рд╛рдпрдж рдЯрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред)

(рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ: рд╢реЗрд▓рдмрдВрдЧ рд▓рд╛рдЗрди #!/bin/sh рд╕рд╛рде рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреВрд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдХреЛ рдареАрдХ рд╕реЗ /bin/sh рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛)ред

рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ PowerShell рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдХреНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрджрд┐ рдпрд╣ #! рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдХреБрдЫ рдФрд░, рдЬреИрд╕реЗ #!/usr/bin/env python рдФрд░ Windows рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ .CMD рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ %COMSPEC% 'n'stuff рдпрд╛ рддреЛ IMHO рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдВрдбреЛрдЬрд╝ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдлрд┐рд░ рд╕реЗ, Invoke-NativeShell рдЬрдирд╛рджреЗрд╢ рдХреЛ рдореВрд▓ рд╢реЗрд▓ рдХрд╛ _CLI_ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд╕рд╣рд╛рдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ (рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде) рдмрдирд╛рдирд╛ (рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ

рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣рд╛рдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рдпреВрдирд┐рдХреНрд╕ рдкрд░ /bin/sh рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдВрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ $env:ComSpec рд╕рд▓рд╛рд╣ рджреЗ рд░рд╣рд╛ рд╣реИред

рдирд╣реАрдВ, рд╕рд┐рд╕реНрдЯрдо-рдХреЙрд▓ рд╕реНрддрд░ рдкрд░ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ _not_ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕рд╛рджреЗ-рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХрд┐ рдЖрдк рдЕрднреА рднреА _can_ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХреА рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ: рд╡реЗ exec рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ _fall рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _ _ them_for рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддреЗ рд╣реИрдВ; рд╡рд╣ рд╣реИ, рдпрд╣ рдЬреЛ рднреА POSIX рдЬреИрд╕рд╛ рд╢реЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ - рдЬрдмрдХрд┐ PowerShell рдмрд╕ _fails_, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╢рд┐рд╖реНрдЯрд╛рдЪрд╛рд░ рд╡рд╛рдкрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЖрдкрдХреЛ Program 'foo' failed to run: Exec format error рдорд┐рд▓реЗрдЧрд╛)ред

рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдорд╛рд░ рд╣реИред

рдирд╣реАрдВ, рд╕рд┐рд╕реНрдЯрдо-рдХреЙрд▓ рд╕реНрддрд░ рдкрд░ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ _not_ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕рд╛рджреЗ-рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХрд┐ рдЖрдк рдЕрднреА рднреА _can_ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ: рд╡реЗ exec рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ _fall back_ рдХреЛ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ __ рд╡рд╣ рд╣реИ, рдпрд╣ рдЬреЛ рднреА POSIX рдЬреИрд╕рд╛ рд╢реЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ - рдЬрдмрдХрд┐ PowerShell рдмрд╕ _fails_, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╢рд┐рд╖реНрдЯрд╛рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЖрдкрдХреЛ Program 'foo' failed to run: Exec format error рдорд┐рд▓реЗрдЧрд╛)ред

csh POSIX рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ exec рдирдВрдЧреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ sh ред рддреЛ perl ред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдмрд╛рдд рдмрдирд╛рддрд╛ рд╣реИ: рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЦреЛрд▓ рдХреЗ рд▓рд┐рдП __ рд╣реИ рдЬреЛ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЧреЛрд▓реЗ / рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ; рдкрд╛рд╡рд░рд╢реЗрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдЧрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдерд╛, рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ /bin/sh , рддреЛ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ: /bin/sh рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдмрд╛рдд рдмрдирд╛рддрд╛ рд╣реИ: рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЦреЛрд▓ рдХреЗ рд▓рд┐рдП __ рд╣реИ рдЬреЛ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЧреЛрд▓реЗ / рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ; рдкрд╛рд╡рд░рд╢реЗрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдЧрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдерд╛, рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ /bin/sh , рддреЛ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ: /bin/sh рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

exec perl рдореЗрдВ рдПрдХ рд╕реАрдзрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИ, perl рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛_ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХрд▓-рдЙрджреНрдзреГрдд (рд╡рд░реНрдмрдЯрд┐рдо) рдФрд░ рджреЛрд╣рд░реЗ-рдЙрджреНрдзреГрдд (рдкреНрд░рдХреНрд╖реЗрдк) рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ ` $ рдХрд╛ -рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЙрдиреНрдирдд) рд╡рд┐рдХрд▓реНрдк рд╣реИред

рд╢рд╛рдпрдж рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ -f рд▓рд┐рдП рдПрдХ рд╣рдЬрд╛рд░ " рдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

@ yecril71pl

рдкрд░реНрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓ рд╣реИ, рдкрд░реНрд▓ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ #! рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Linux рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд syscall #! рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

user@Programming-PC:/tmp/exec_test$ ls
test.c  testscript
user@Programming-PC:/tmp/exec_test$ cat test.c
#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv) {
  char *binaryPath = "./testscript";

  execl(binaryPath, binaryPath, NULL);

  perror("Error");

  return 0;
}
user@Programming-PC:/tmp/exec_test$ gcc test.c -o testexecutable
user@Programming-PC:/tmp/exec_test$ chmod +x testscript 
user@Programming-PC:/tmp/exec_test$ cat testscript 
echo test from script
user@Programming-PC:/tmp/exec_test$ #works from shell:
user@Programming-PC:/tmp/exec_test$ ./testscript 
test from script
user@Programming-PC:/tmp/exec_test$ #doesn't work via exec syscall:
user@Programming-PC:/tmp/exec_test$ ./testexecutable 
Error: Exec format error
user@Programming-PC:/tmp/exec_test$ vim testscript 
user@Programming-PC:/tmp/exec_test$ cat testscript 
#!/bin/sh
echo test from script
user@Programming-PC:/tmp/exec_test$ #exec syscall works with #! line:
user@Programming-PC:/tmp/exec_test$ ./testexecutable 
test from script
user@Programming-PC:/tmp/exec_test$ uname -a
Linux Programming-PC 4.4.0-176-generic #206-Ubuntu SMP Fri Feb 28 05:02:04 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
user@Programming-PC:/tmp/exec_test$ 

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛, рдХрд┐ рдЕрдЧрд░ рдЖрдк рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрдВрдХреНрд╢рди execlp рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рджреА рдЧрдИ рд╣реИ (рддреНрд░реБрдЯрд┐ ENOEXEC рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ (2) рд╡рд┐рдлрд▓ рд░рд╣рд╛), рддреЛ рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЗ рд╕рд╛рде рд╢реЗрд▓ (/ рдмрд┐рди / рд╢) рдХреЛ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред (рдпрджрд┐ рдпрд╣ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреЛрдИ рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ)

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ "linux" рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрдиреВ c рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА - рдФрд░ рдлрд┐рд░ рд╕реЗ рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ / рдмрд┐рди / рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдпреЛрдЧреНрдп рд╢реЗрд▓ рдХрд╛ рдирд╣реАрдВред ( posix/execvpe.c ( new_argv[0] = (char *) _PATH_BSHELL; ) рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдФрд░ sysdeps / рдЬреЗрдиреЗрд░рд┐рдХ / paths.h) - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рд╣реИ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ ...) ( #define _PATH_BSHELL "/bin/sh" ))

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ "linux" рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрдиреВ c рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА - рдФрд░ рдлрд┐рд░ рд╕реЗ рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ / рдмрд┐рди / рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдпреЛрдЧреНрдп рд╢реЗрд▓ рдХрд╛ рдирд╣реАрдВред ( posix/execvpe.c ( new_argv[0] = (char *) _PATH_BSHELL; ) рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдФрд░ sysdeps / рдЬреЗрдиреЗрд░рд┐рдХ / paths.h) - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реЗрдбрд░ рд╣реИ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ ...) ( #define _PATH_BSHELL "/bin/sh" ))

рдЪреВрдВрдХрд┐ рдпрд╣ sysdeps/**/linux рд╕реЗ рдЖрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд▓рд┐рдирдХреНрд╕ рдЪреАрдЬ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╣реА рдХрдордиреАрдп рд╣реИ - рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдкреНрд░рддрд┐ рдУрдПрд╕ред

рд╣рд╛рдВ, рдореИрдВ _current_ рд╡реНрдпрд╡рд╣рд╛рд░ @ vexx32 рдХреЛ рд╕рдордЭрддрд╛ --% рдХреЗ _current_ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдирд╣реАрдВ рд╣реВрдБ) - рд╣рдо рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдирд╣реАрдВ? рдореБрдЭреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдпрд╣рд╛рдБ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? :)

рддреЛ --% рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкрд┐рдЪ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рд╣реЛрдЧрд╛, рддреЛ рдЗрд╕рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ _as is_ (рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рддрдХ) рд╣реИ рдФрд░ рд╕реАрдзреЗ bash / cmd рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрдИ рднреА рдкрд╛рд╡рд░рд╕реНрд▓рд╛рдЗрдо рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЗрд╕рдореЗрдВ рд╕рднреА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ --% рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЗрд╢реА рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИред

рдУрд╣ рдкреНрд░рднреБ ... рдХреНрдпрд╛ рд╣рд░ рдХреЛрдИ рдореБрдЭреЗ рдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ? ЁЯШД рдирд╣реАрдВ, рдкреИрдЯреНрд░рд┐рдХ - рдпрджрд┐ рдЖрдк рдкреЙрд╡рд░рд╢реЗрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ --% рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд┐рдирд╛ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣рд╛рдВ рдПрдХрд▓-рдЙрджреНрдзрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ рднреА, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдЦреЗрд▓ рдореЗрдВ рдХреЛрдИ рддреНрд╡рдЪрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд╛рдлреА рдХреБрдЫ рдХрд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╢реЗрд▓ рдХреЗ рднреАрддрд░ рд╕реЗ рджреВрд╕рд░реЗ рд╢реЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП cmdlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдирд╛рдбрд╝реА рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдирд╛рдбрд╝реА рд╣реИ рдЬрдм рдЖрдк рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рд╢реЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ cmdlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЙрд╕ рджреНрд╡рд┐рддреАрдпрдХ рд╢реЗрд▓ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреВрд░реА рдмрд╛рдд рд╕рд┐рд░реНрдл рдмрджрдмреВ рдЖрддреА рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрдВрддрд┐рдо рд╢рдмреНрдж

рдЗрд╕ рдЖрдЗрдЯрдо рдХрд╛ рд╢реАрд░реНрд╖рдХ "рдХреЙрд▓ рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рд╣реИред" рдЬрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ & рдПрдХ рдмрд░реНрдмрд╛рдж рдореМрдХрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЯреЛрдХрди рд╣реИ рдЬреЛ рдореВрд▓ рдЖрджреЗрд╢реЛрдВ, --% рддрд░реНрдХреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрднреА, & --% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╢реБрд░реБрдЖрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдкреЙрд╡рд░рд╢реЗрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдБ --% рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдСрдкрд░реЗрдЯрд░ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА PowerShell рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдРрд╕реА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдПрдХрд▓ рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред рдпрд╣ "рдкрд╛рда рдХреЛ рджрд╛рдИрдВ рдУрд░ рднреЗрдЬреЗрдВ" рдЬреИрд╕рд╛ рдХрд┐ "рд╕рд╣реА" рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рди рдХрд░реЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореВрд▓реНрдп рднреЗрдЬреЗрдВ "

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдерд╛:

--% @'
echo my native command
'@

рдпрд╣ рдЕрдиреБрд╡рд╛рдж рд╣реЛрдЧрд╛:

cmd.exe /c "@'"
echo my native command
'@

рд╕рд┐рд╡рд╛рдп рдЖрдкрдХреЛ рдПрдХ рдкрд╛рд░реНрд╕рд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ '@ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ @ рд╢рд╛рдорд┐рд▓ рд╣реИ ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдХрдореЛрдмреЗрд╢ рдПрдХ рд╣реА рдЪреАрдЬрд╝ ins , рд▓реЗрдХрд┐рди рдКрдкрд░ рд╡рд░реНрддрдорд╛рди рдкрд┐рдЪ --% рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

cmd /c --% @'
echo my native command
'@

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдБ:

рдЕрднреА, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ & рдХреЗ рд╕рд╛рде -% рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ / рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╢реБрд░реВ рд╣реЛрдЧрд╛, рд╣рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рднреА рд╕реНрдкрд╖реНрдЯ рд╡рд░реНрддрдиреА рдХрд░рддреЗ рд╣реИрдВ: рдпрд╣рд╛рдВ-рддрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ --% рдЬрдм рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ &

рд╣рд╣ рд╡рд╣ рдПрдХ рдмрдбрд╝рд╛ рдКрдл рд╣реИ - рд╣рд╛рдБ, рдореИрдВ рдЪреВрдХ рдЧрдпрд╛, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @oisingред

рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ --% рдорддрд▓рдм рд░реЛрдХрдирд╛ рдФрд░ "рдореВрд▓ рддрд░реНрдХ рдмрдВрдзрди рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдирд╛" рд╣реЛрдирд╛ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЗрд╕реА рддрд░рд╣ рдпрд╣ Invoke-NativeShell рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛ред

рдЧрд╣рд░реА рдкреБрдирдГ exec , @TSlivede рдЦреБрджрд╛рдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ; рд▓рд┐рдирдХреНрд╕ рдФрд░ macOS рджреЛрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:

рдпреВрдирд┐рдХреНрд╕ рдкрд░ exec рдирд╛рдордХ рдХреЛрдИ рд╕рд┐рд╕реНрдЯрдо (рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рдЙрдирдХреЗ рдирд╛рдо рдореЗрдВ exec рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ _family_ рд╣реИ (рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ)ред

  • _System_ рдлрд╝рдВрдХреНрд╢рдВрд╕ ( man рдЕрдиреБрднрд╛рдЧ 2 ), execve рдЗрд╕рдХреЗ рджрд┐рд▓ рдореЗрдВ, _fail_ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╢рдмрдВрдЧ-рдХрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

  • _Library_ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░_рдмрд┐рд▓реНрдЯ рдХрд░рддреЗ рд╣реИрдВ_ ( man рдЕрдиреБрднрд╛рдЧ 3 - man 3 exec ), рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЗ рдкрд╛рд╕ p ("рдкрде" рдХреЗ рд▓рд┐рдП), рдореИрдВ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкрд╛рд╕-рдЯреВ-рдж-рд╕рд┐рд╕реНрдЯрдо-рд╢реЗрд▓ рдлрд╝реЙрд▓рдмреИрдХ (рдЬреИрд╕реЗ, execlp ) рд╣реИред

    • рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП GNU рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рд╛рд░реНрдб-рдХреЛрдб /bin/sh , рдЬреИрд╕рд╛ рдХрд┐ @TSlivede рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд┐рд░реНрдл sh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ sh рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ $env:PATH (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ, man рдкреЗрдЬ /bin/sh рдмрддрд╛рддрд╛ рд╣реИ)ред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, _direct рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ POSIX- рдЬреИрд╕реЗ рдЧреЛрд▓реЗ ( bash , dash , ksh , рдФрд░ zsh ) рдХрд╛рдЧрдЬрд╝-рдХрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ _themselves_, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ exec рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдмреАрдЪ рдлрд╝реЙрд▓рдмреИрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, perl рдХреА рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП exec рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдордмреИрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдерд╛; рдЗрд╕реА рддрд░рд╣, рдкреНрд░рдореБрдЦ POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХреЗ exec _builtins_, bash рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХрдордмреИрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

рдЪреВрдВрдХрд┐ рдпреВрдирд┐рдХреНрд╕ рдореЗрдВ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдкрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╛рди рдзрд╛рд░рдгрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдлрд╝реЙрд▓рдмреИрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕, рдФрд░ рдореИрдВ /bin/sh sh рдХреЗ рд▓рд┐рдП

POSIX рдХрд▓реНрдкрдирд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ :

  • /bin/sh рдорд╛рди рд▓реЗрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ _de facto_ standard рд▓реЛрдХреЗрд╢рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯреЗрдмрд▓ Unix рд╢реЗрд▓ рд▓рд┐рдЦрдирд╛ _noubitates_ sh рдЙрд▓реНрд▓реЗрдЦ рдЕрдкрдиреЗ рдкреВрд░реНрдг рдкрде рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╣ рд╢реАрд▓реНрдб рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ _full, рд╢рд╛рдмреНрджрд┐рдХ_ рдкрде ( #!/bin/sh )ред

  • рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, sh $env:PATH рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ $env:PATH рдХреЛ рдПрдХ рдЕрд▓рдЧ sh рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЬреЛрдЦрд┐рдо cmd.exe $env:ComSpec cmd.exe рдорд╛рдзреНрдпрдо рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ GetSystemDirectory WinAPI рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдФрд░ \cmd.exe рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо (рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрдордмреИрдХ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрдЧрд░ $env:ComSpec рдШрдЯрд┐рдд рди рд╣реЛ)ред

/bin/sh рдорд╛рди рд▓реЗрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ _de facto_ standard рд▓реЛрдХреЗрд╢рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯреЗрдмрд▓ рдпреВрдирд┐рдХреНрд╕ рд╢реЗрд▓ _noubitates_ рд▓рд┐рдЦрддреЗ рд╣реБрдП sh рдЗрд╕рдХреЗ рдкреВрд░реНрдг рдкрде рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╣ рд╢реАрд▓реНрдб рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ _full, рд╢рд╛рдмреНрджрд┐рдХ_ рдкрде ( #!/bin/sh )ред

рдЖрдо рддреМрд░ рдкрд░ рдЖрдк #!/usr/bin/env sh (рд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХрд╣рддреЗ рд╣реИрдВред

  • рдЖрдо рддреМрд░ рдкрд░, рдЖрдк _d't_: googling "#! / Bin / sh" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 3,900,000 рдореИрдЪреЛрдВ рдореЗрдВ рдкреИрджрд╛рд╡рд╛рд░, "#! / Usr / bin / env sh" рдкреИрджрд╛рд╡рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 34,100 рдореИрдЪред

  • рдЖрдо рддреМрд░ рдкрд░, рдЖрдк _shouldn't_: рдЖрдк рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ _the_ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, /bin/sh , рди рдХрд┐ sh рдЙрдкрдпреЛрдЧрд┐рддрд╛ $env:PATH рдореЗрдВ рдкрд╣рд▓реЗ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред

рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо sh рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдХрдо-рд╕рд╛рдорд╛рдиреНрдп-рднрд╛рдЬрдХ-рдорд╛рди-рдкреЙрд╕рд┐рдХреНрд╕-рд╕реБрд╡рд┐рдзрд╛рдПрдБ-рдХреЗрд╡рд▓ _system_ рд╢реЗрд▓, рдЕрд░реНрдерд╛рддреН /bin/sh рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЖрдо рддреМрд░ рдкрд░, рдЖрдк _d't_: googling "#! / Bin / sh" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 3,900,000 рдореИрдЪреЛрдВ рдореЗрдВ рдкреИрджрд╛рд╡рд╛рд░, "#! / Usr / bin / env sh" рдкреИрджрд╛рд╡рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 34,100 рдореИрдЪред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЦреЛрдЬ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рд╣реИрдВ, рддреЛ рд╡реЗ execlp рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрджрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдХрд╣рд╛ рдХрд┐, рд╣рдореЗрдВ _normal_ рдХреЗ рд▓рд┐рдП _customary_ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред PowerShell рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ; рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдИ рд╢реЗрд▓ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ sh , /bin/sh , рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реЛрддреЗред

@oising

рджреЗрд╢реА-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди _as рдХреЛ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ (рдЬреЛ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ (-рд▓рд┐рдЯрд░рд▓) рдлреЙрд░реНрдо рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ) рдкрд╛рд╕ рдХрд░рдирд╛, рдФрд░ _only_ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ (рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд, рдкрд╛рд╕-рдЯреВ-рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗрдВ) рдХреЗрд╡рд▓) рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ) - рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ - рдЖрдо рдЬрдореАрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ _single string_ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

  • рдРрд╕реА рдХреЙрд▓ рдХреЛ _PowerShell_ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗред
  • рджреЗрд╢реА-рд╢реЗрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ _PowerShell рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐_ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗред

рдПрдХ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛ рдПрдХ _direct рд╡реИрдЪрд╛рд░рд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐_ рд╣реИ рдЬреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛; рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реАрдзреЗ PowerShell рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ _ _ _ рдХреЗ рд╕рд╛рде (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдирдВрдЧреЗ-рд╢рдмреНрдж) рддрд░реНрдХреЛрдВ рд╕реЗ рдЕрдХрд▓реНрдкрдиреАрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореВрд▓рднреВрдд рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднреНрд░рд╛рдордХ рд╕рдордЭреМрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореМрдЬреВрджрд╛ --% рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╡рддрд╛рд░ рд▓реЗрддрд╛ рд╣реИред


рдЬрдм рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рддрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдЬрдм рд╣рдо рдЙрд╕ рдПрдХрд▓-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ _operator_ рдпрд╛ _cmdlet_ рдЪреБрдирддреЗ рд╣реИрдВ (_discoverability_ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗрдВ), рдореБрдЭреЗ рджреЛрдиреЛрдВ & рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реИрдЪрд╛рд░рд┐рдХ рдЪрд┐рдВрддрд╛ рд╣реИ --% ( & ):

  • рдЪрд┐рдВрддрд╛ рдлрд┐рд░ рд╕реЗ & : рдЕрдЧрд░ рд╣рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд╛рд▓реЗ рдПрдХ - рдЙрджреНрдзреГрдд - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ _expression_ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ & рд╡рд░реНрддрдорд╛рди рдореЗрдВ _argument_ рдореЛрдб рдХрд╛ рдЕрд░реНрде рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ: _indateral_ рддрд░реНрдХ, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЙрджреНрдзреГрдд)ред рдЗрд╕рд▓рд┐рдП, & рдХреА рднрд╛рдЧреАрджрд╛рд░реА рднреНрд░рд╛рдордХ рд╣реИред

  • рдЪрд┐рдВрддрд╛ --% рд╣реИ, рдХреЗрд╡рд▓ рд╕реНрдЯреЙрдк-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ --% рдореВрд▓ рдФрд░ muddled рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ; рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ --% рд╕реНрдЯреЙрдк-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ _argument_ рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛ (рдЬреИрд╕реЗ
    & /bin/ls --% dir1 dir2 ), рдЬрдмрдХрд┐ & --% _expression_ рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд (рдЬреИрд╕реЗ & --% '/bin/ls dir1 dir2 >out.txt' )


рдореБрдЭреЗ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реЗ рдЬрд╛рдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд╛рдЧреВ --% , рд╕реНрдЯреЙрдк-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рддреАрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:

рдпрд╣ рджреЛ рдЕрдВрддрддрдГ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдерд╛ (рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдордп рд╡рд┐рдВрдбреЛрдЬ):

  • (рдП) рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЬреЛ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдореБрдЭреЗ _command lines_ рдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cmd.exe / рдореВрд▓ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ PowerShell рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

  • (b) рд╣рдореЗрд╢рд╛ Windows- рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛: рдореБрдЭреЗ рдПрдХ _rogue CLI_ (рдЬреЛ рдХрд┐ рдПрдХ _single_ рдмрд╛рд╣рд░реА рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рдЬреЗрдиреЗрд░рд┐рдХ рдкреАрдЫреЗ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред , рдореБрдЭреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рд╢рд┐рд▓реНрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рдЕрдВрддрддрдГ рдРрд╕реЗ CLIs _verbatim_ рдХреЗ рд▓рд┐рдП WinAPI рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред (рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╡рд░рдг рдХреЛ рдЗрд╕ рд╕реАрдорд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ PowerShell рдХрд╛ рдкреБрди: рдЙрджреНрдзрд░рдг рдЖрдо рддреМрд░ рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдпрд╣ рдХрднреА рдирд╣реАрдВ рд╣реИ - рдпрд╣ # 1995 рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ)ред

--% рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреЛрдиреЛрдВ (рдП) рдФрд░ (рдмреА) рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреНрд░рдпрд╛рд╕, рдФрд░ рдЕрдВрдд рдореЗрдВ рди рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ:

  • рдЗрд╕реЗ (рдП) рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЧрдВрднреАрд░ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ _ рдХреЗрд╡рд▓ cmd exe рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреА рд╣реИ %...% -рд╕реНрдЯрд╛рдЗрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг-рдЪрд░ рд╕рдВрджрд░реНрдн_ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ:

    • рдпрд╣ рдХреЗрд╡рд▓ рдХрднреА рдПрдХ _single_ cmd рдХрдорд╛рдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ | (рдФрд░)
      && рдФрд░ || , рднрд▓реЗ рд╣реА рд╡реЗ рдЙрд╕ рд╕рдордп рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ) рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд╕-рдЯреВ- cmd рднрд╛рдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреЗ рд╣реИрдВред

    • A _single_ & - рдЬреЛ cmd s-рдХрдорд╛рдВрдб рд╕реЗрдкрд░реЗрдЯрд░ рд╣реИ - _is_ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдиреЗ рднреА _not_ рдХреЛ рдорд▓реНрдЯреА-рдХрдорд╛рдВрдб рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ - cmd isn 'рдХреЗ рдмрд╛рдж рд╕реЗ t рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ - & _verbatim рдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо_ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдЬреИрд╕реЗ
      echoArgs.exe --% a & b a рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ b рдЖрд╣реНрд╡рд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╢рдмреНрджрд╢рдГ рддрд░реНрдХ a , & , рдФрд░ b рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рд╕реЗ echoArgs ред

    • cmd рдмрдЪ рдЪрд░рд┐рддреНрд░ ( ^ ) рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд░реНрдХ рдХреЗ рд╕рдореНрдорд╛рдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    • рдПрдХ рдХреЛрд░реЛрд▓рд░реА рдХреЗ рд░реВрдк рдореЗрдВ, рдореМрдЬреВрджрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ %...% рдЯреЛрдХрди _invariably_ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИрдВ; ^ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ
      echoArgs.exe Don't expand %^USERNAME% , рдЬрд┐рд╕рдореЗрдВ cmd рд░реЛрдХрддрд╛ рд╡рд┐рд╕реНрддрд╛рд░ _and рд╕реНрдЯреНрд░рд┐рдкреНрд╕ ^ _, рдмрд░рдХрд░рд╛рд░ рд░рдЦрддреА рд╣реИ ^ рдЬрдм рдХреЗ рд░реВрдк рдореЗрдВ PowerShell рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ echoArgs.exe --% Don't expand %^USERNAME%

  • (рдмреА) рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛:

    • рдЬреИрд╕реЗ (a) рдЙрдкрдпреЛрдЧ, рдХрдорд╛рдВрдб рдореЗрдВ _PowerShell_ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг_ рдЪрд░_ рдЬрд┐рд╕реЗ рдЖрдк рддрдм %...% --% рдмрд╛рдж рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ; рдЬреИрд╕реЗ
      $env:FOO='foo'; echoArgs.exe --% %FOO%!

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ (рдП) рдХрд╛ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди Invoke-NativeShell / ins ред

(рдмреА) рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛:

  • --% рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ _first_ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд░реЗрдВ
  • рдФрд░, ins рд╕рд╛рде рдХреА рддрд░рд╣, рдЗрд╕рдХреЗ рд▓рд┐рдП _ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкрд╛рд╕-рдереНрд░реВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди _as a__ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реЗ _PowerShell_ рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рддрд░реАрдХреЗ (рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ)
  • рдЬреИрд╕реЗ msiexec --% "/i installer.msi INSTALLLOCATION=`"$loc`"" , $loc 'c:\foo\bar none' , рд╡рд░реНрдмрдЯрд┐рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ /i installer.msi INSTALLLOCATION="c:\foo\bar none" рд╕реЗ рдЧреБрдЬрд░рдирд╛, msiexec рдХреА рдЧреИрд░-рд╕рдВрддреЛрд╖рдЬрдирдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ред <prop>=<value> рддрд░реНрдХреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ <value> рднрд╛рдЧ рдХреЛ рд╣реА рдбрдмрд▓-рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ _convenient_ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрд░рд╛рдЬрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдХреАрдордд рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди-рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХ рд╣реИред

@ mklement0 рд░реЛрдЧреА рдФрд░ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдЙрддреНрддрд░ (рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рддрд╣реЗ рджрд┐рд▓ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ;

(рдмреА) рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛:

  • рд╕рдорд░реНрдерди -% рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
  • рдФрд░, рдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХреА рддрд░рд╣, рдЗрд╕реЗ рдПрдХ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкрд╛рд╕-рдереНрд░реВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдард┐рдд рдХрд░рддрд╛ рд╣реИ,> - рдлрд┐рд░ рд╕реЗ PowerShell рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди (рдпрд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ) рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг)

    • рдЬреИрд╕реЗ msiexec -% "/ i рдЗрдВрд╕реНрдЯреЙрд▓рд░ .msi INSTALLLOCATION = "$loc " ", рдЬрд┐рд╕рдореЗрдВ $ рд▓реЛрдХ 'c: foobar none' рд╕реЗ рдпреБрдХреНрдд рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╢рдмреНрджрд╢рдГ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди / i рдЗрдВрд╕реНрдЯреЙрд▓рд░ .msi INSTALLLOCATION =" c: foobar рдХреЛрдИ рдирд╣реАрдВ "рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, msiexec рдХреА рдЧреИрд░-рдЬрд░реВрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ=рдХреЗрд╡рд▓ рддрд░реНрдХрднрд╛рдЧ рдбрдмрд▓-рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ (рдП) рдФрд░ (рдмреА) рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ (рдП) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЕрдЧрд░ (b) & рд▓рд┐рдП _specifically_ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХрд╡рд░ (a) рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдЙрджрд╛ред ins ... рджреЗрддрд╛ рд╣реИ рдХрд┐ & cmd --% ... рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдФрд░ рдпрд╣ & --% рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЬреЛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИред) рдмреЛрдирд╕ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдХреЙрдорд╕реНрдкреЗрдХ, рд╢реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЬреЛ рдХреБрдЫ рднреАред рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдлреИрд╕рд▓рд╛ рдХрд░рдиреЗ рджреЗрдВред

@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА:

  • рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреА; рд╣рдо рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ; рд╣рдо PR рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ /bin/sh рдмрдирд╛рдо /bin/env sh рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддреЗ рд╣реИрдВ
  • рд╣рдо --% рд╕рд╛рде рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рд╕реНрдЯреИрдХреНрд╡реЛрд╡рд░рдлрд╝реНрд▓реЛ" рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирдП рдСрдкрд░реЗрдЯрд░ рдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдерд╛ред )
  • рдПрдХ Invoke-NativeShell cmdlet рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЗрд╕реЗ PowerShellGallery рдореЗрдВ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  • рд╣рдо --% рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  • рдЬрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ --% рд╕реНрд╡рд┐рдЪ рдХреА рддрд░рд╣ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ --% (рдпрд╛ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдПрдХ рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИ
  • рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ PSReadLine рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рдордиреЛрд░рдВрдЬрдХ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЪрд┐рдкрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдВрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЗрд░рд╛рджреЗ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
  • рд╣рдо рдРрд╕реЗ рдХрдИ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдмрдирд╛рдо рдЧреИрд░-рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╡рд┐рд╕реНрддрд╛рд░) рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ; рдЙрджрд╛ & --% рдмрдирд╛рдо --%

рдореИрдВ рдпрд╣ рднреА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдХреЗ рдмрд╛рд╡рдЬреВрдж рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ # 1995 рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ред

рдпрд╣ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рд╛рдн # 1995 рдХреЗ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-рдкреАрдПрд╕ рдкреНрд░рдмреБрджреНрдз рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдбреЙрдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рд▓реЛрдЧ рдХрдЯ (рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) (рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреА рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЗ рднреАрддрд░ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рднрд╛рдЧрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрдВрдЧрд▓реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ # 1995 рдХреЛ рд╣рд┐рдЯ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ (рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реВрдВрдЧрд╛)ред

  • рд╣рдо рдПрдХ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ --% рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ

рдЗрд╕реЗ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдФрд░ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░реНрдЪрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдСрдкрд░реЗрдЯрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╣реИ? (рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реВрдВред)

$a = --% find . -iname *$pdf -print0 | xargs -0 ls -ltr

рдкрд╛рдЗрдк рдХрд┐рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ $ ? & , && , рдФрд░ || ред

рдХреНрдпрд╛ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ --% рдПрдХ рдкреАрдПрд╕ рдкрд╛рдЗрдк рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛?

рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕реЗ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдФрд░ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░реНрдЪрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдСрдкрд░реЗрдЯрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╣реИ? (рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реВрдВред)

рдПрдПрд╕рдЯреА рд╡рд╛рд░ рдпрд╣ рд╕рдВрднрд╡рддрдГ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдПрд╕рдЯреА рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрдкрд░ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдЧрд╛ред

$a = --% find . -iname *$pdf -print0 | xargs -0 ls -ltr

рдкрд╛рдЗрдк рдХрд┐рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ $ ? & , && , рдФрд░ || ред

рд╕реНрдЯреНрд░рд┐рдВрдЧ find . -iname *$pdf -print0 | xargs -0 ls -ltr рд░реВрдк рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рджреЗрд╢реА рдЦреЛрд▓ рдХреЗ рд▓рд┐рдП рд╣реИред $a рдЕрднреА рднреА рдЖрдмрд╛рдж рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдкрд╛рдЗрдк рдореЗрдВ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ --% рдПрдХ рдкреАрдПрд╕ рдкрд╛рдЗрдк рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛?

рдпрджрд┐ ~ рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдПрд▓рд┐рдореЗрдВрдЯ рд╕реНрд▓реЙрдЯ рдореЗрдВ ~ рдпрд╣ рдПрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдирд╣реАрдВред рдпрд╣ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдбреНрд░рд╛ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИ ~ рд╢реБрд░реВ рдореЗрдВ, рдпрд╣ рдЖрдЬ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗрдЧрд╛ред

(@ daxian-dbw @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЧрд▓рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╕рд╣реА рдХрд░реЗрдВ тЭдя╕П)

@ рдирд┐рд╢реНрдЪрдп рд╣реА рд╕рд╣реА рд╣реИ

рдЕрдЧрд░ рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдПрд▓рд┐рдореЗрдВрдЯ рд╕реНрд▓реЙрдЯ рдореЗрдВ, рд╢рд╛рдпрдж рдирд╣реАрдВред рдпрд╣ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдбреНрд░рд╛ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЖрдЬ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред

рдпрд╣ рдореВрд▓ рдХрдорд╛рдВрдб рдХреЗ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ --% рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред --% рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреЗрд╡рд▓ рджреЗрд╢реА рд╢реЗрд▓ рдореЗрдВ рд╕реМрдВрдкрддрд╛ рд╣реИ, рдЬреИрд╕реЗ bash , рд▓реЗрдХрд┐рди рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдорд╛рдВрдб рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреЗрд╡рд▓ bash рдЦрд┐рд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рджреЗрд╢реА рдХрдорд╛рдВрдб рд╣реА, рдЬреИрд╕реЗ find ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ "рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ" рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмреЗрд╣рддрд░ рд╕рд┐рд░реНрдл --% рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рдХреНрддрд╡реНрдп рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдмрдирд╛ рджреЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдХрд┐ рдпрд╣ _PowerShell_ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЖрд╣ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдПрдХ рдХрд╛рд░рдг рдерд╛ рдХрд┐ "рдХрдорд╛рдВрдб рдПрд▓рд┐рдореЗрдВрдЯ рд╕реНрд▓реЙрдЯ" рдЧрд▓рдд рдерд╛ред рдореИрдВ рдПрдХ рдмрдпрд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдБрдЧрд╛, рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдорд╛рдВрдб рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ bash рдЦрд┐рд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛

рдХреНрдпрд╛ _upstream_ рдХрд╛ рдорддрд▓рдм _us_ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: 'ls' | bash ред рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╕рдВрднрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬреАрдм рдмрд╛рдд рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @jpsnover рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╢рд░рдгрд╛рд░реНрдереА рдХреЗ рд░реВрдк рдореЗрдВ #! рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕рд┐рд░реНрдл рдЯрд╛рдЗрдк рдХрд░реЗрдВрдЧреЗ:

#!/bin/sh ls | grep foo
#!sh | grep foo

(рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ sh рдкрде рдореЗрдВ рд╣реИ) рдХреЛ рдорд╛рдирддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╢реЗрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╛ рдпрджрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдЙрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдХреЗ рддрд╣рдд рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, sh рджреЛ рдмрд╛рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╢реЗрдмрдВрдЧ рдлрд╛рдЗрд▓реЗрдВ рдЖрдЬ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╢реЗрдмрдВрдЧ рдХреЛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдирдпрд╛ рд╕реЗрдЯ рдПрдХ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХред

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЛрдг рдЪрд┐рд╣реНрди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

powershell ```bash ls | grep foo ```

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдорд╛рд░реНрдХрдбрд╛рдЙрди рдХреЛрдб рдлреЗрдВрд╕рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рднреА рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдРрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдЕрдиреБрдЧрд╛рдореА рдЯреНрд░рд┐рдкрд▓-рдмреИрдХрдЯрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

powershell $a = ```bash ls | grep foo ``` | select-string bar

@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдЬреИрд╕реЗ рдХрд┐ рдЕрдЬрдЧрд░ рдпрд╛ рд╢рд╛рдпрдж рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ?

рд╢реЗрдмрдВрдЧ #! рдореМрдЬреВрджрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдореБрдЭреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓рдЧрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _use_ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рдФрд░ рд╣рд╛рдБ, рд╣рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ _should_ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░ рди рд╣реЛрдВред #Requires рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдХрд┐рдирд╛рд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╢реЗрдмрдВрдЧ рдкрд░ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдВрдбреЛрдЬ рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓реЛрдЧ рднреАред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╢реЗрдмрдВрдЧ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдорд╛рд░реНрдХрдбрд╛рдЙрди рдХреЛрдб-рдмреНрд▓реЙрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкрд╛рд╡рд░рд╕реНрд▓реЗ рдореЗрдВ рдордирдорд╛рдирд╛ рднрд╛рд╖рд╛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдорд╛рд░реНрдХрдбрд╛рдЙрди рдХреЛрдб-рдмреНрд▓реЙрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкрд╛рд╡рд░рд╕реНрд▓реЗ рдореЗрдВ рдордирдорд╛рдирд╛ рднрд╛рд╖рд╛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдореИрдВ рд╕рдЪрдореБрдЪ рдЗрдирд▓рд╛рдЗрди C # рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдордирдорд╛рдиреЗ рднрд╛рд╖рд╛ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдореНрдмреЗрдбреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓реЗрдЧрд╛ред рдЖрдк @' рдХреЗ рдЕрдВрджрд░ рдордирдорд╛рдирд╛ рднрд╛рд╖рд╛ рдХреЛрдб рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЯреАрдо рдЪрд░реНрдЪрд╛ рдореЗрдВ рдФрд░ рдЬреЗрдлрд░реА рдХреЗ рд╕рд╛рде рднреА, рд╣рдореЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднреАрддрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ @ yecril71pl рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рд╕реАрдзреЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдпрд╣рд╛рдВ рдкрд░рд┐рджреГрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдЬрдЧрд░ рдпрд╛ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреА рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднреАрддрд░ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡реЗ рдкрд╕рдВрдж рдХрд░рдиреЗ рдкрд░ рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ PowerShell рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдХрдЯреМрддреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╣рдореЗрдВ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдмрдирд╛рдо рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рдорд╛рди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рдеред

рдореИрдВ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рд╕рд╛рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд╡рд┐рджреЗрд╢реА рдХреЛрдб рджреНрд╡реАрдк рдкреНрд░рдореБрдЦ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдХрд┐рд╕реА рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдЖрдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

@ yecril71pl рдореИрдВ рдЦреБрдж рдЙрд╕ рдУрд░

рдЯреАрдо рдЪрд░реНрдЪрд╛ рдореЗрдВ рдФрд░ рдЬреЗрдлрд░реА рдХреЗ рд╕рд╛рде рднреА, рд╣рдореЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднреАрддрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрд┐рд▓реНрдХреБрд▓ 100%, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реАрдзреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ @ yecril71pl рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рд╕реАрдзреЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдпрд╣рд╛рдВ рдкрд░рд┐рджреГрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдЬрдЧрд░ рдпрд╛ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреА рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднреАрддрд░ рд╣реИред

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ-рддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЬрдЧрд░ рдФрд░ рдорд╛рд░рдкреАрдЯ рдкрд░ рд░реЛрдХ рдХреНрдпреЛрдВ? C #, CIL, C ++ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рд▓реЛрдЧреЛрдВ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡реЗ рдкрд╕рдВрдж рдХрд░рдиреЗ рдкрд░ рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ PowerShell рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдХрдЯреМрддреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИ, рдФрд░ рдЕрдВрддрддрдГ рдЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рддрдм рддрдХ рдЕрдкрдардиреАрдп рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдореВрд▓ рд╡рд┐рд╖рдп рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ-рддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ?

рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ @' рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЬрдЧрд░ рдФрд░ рдорд╛рд░рдкреАрдЯ рдкрд░ рд░реЛрдХ рдХреНрдпреЛрдВ? C #, CIL, C ++ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдирд╣реАрдВ рд╣реИрдВ?

рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ @' рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред

рдПрдХ рд╕рдВрдкрд╛рджрдХ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ bash -c @' рдореЗрдВ рдХреЛрдб рдмрд╛рдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмреИрд╢ рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА рдЪреБрдиреМрддреАрдкреВрд░реНрдг рднрд╛рдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рднрд╛рдЧ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдХрд╛ рд╣реИ, рдпрд╣ рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░реНрд╕ рдХреА рдЬреБрдЧрд▓рдмрдВрджреА рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдирд┐рд╡реЗрд╢ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдерд╛ред

рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдирд╣реАрдВ рд╣реИрдВ?

C # рдФрд░ C ++ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕рдмрд╕реЗрдЯ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдирд╣реАрдВ, "рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛" рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред рдпрд╣ рд╕рдорд╛рд╡реЗрд╢реА рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред

C # рдФрд░ C ++ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕рдмрд╕реЗрдЯ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдирд╣реАрдВ, "рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛" рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред

рдПрдХ рднрд╛рд╖рд╛ рдПрдХ (рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди) рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬрдм рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ interpet optionsтАж script argumentsтАж рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛, рдЕрд╕реНрдерд╛рдпреА рд╕рд╛рдорд╛рди рдФрд░ рдирд┐рдЬреА рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдо рддреМрд░ рдкрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реА рдПрдореНрдмреЗрдбреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЗрд╕ рддрд░рд╣ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

@SeeminglyScience

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ-рддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ?

рд▓реЛрдЧ рдЖрдЬ рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡реЗ рджреЗрд╢реА рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рджрд┐рдП рдЧрдП рд╕рднреА рддрд░реНрдХреЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд╕рд╣реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рдЖрд╢рдп рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ (рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ) рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЬрдЧрд░ рдФрд░ рдорд╛рд░рдкреАрдЯ рдкрд░ рд░реЛрдХ рдХреНрдпреЛрдВ? C #, CIL, C ++ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдпрд╣рд╛рдВ рд╕рдорд░реНрдерд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдореВрд▓ рдХрдорд╛рдВрдб рдкрд░ рднреЗрдЬреЗ рдЧрдП рдкрд╛рда рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИред рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд╣ рдЙрд╕ рд╕рдореНрдореЗрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИ, рдФрд░ рдЕрдВрддрддрдГ рдЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рддрдм рддрдХ рдЕрдкрдардиреАрдп рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗред

рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдорд┐рд╢реНрд░рд┐рдд рднрд╛рд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд░рдВрдЧ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреА рдХреЛрдИ рднреА рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдл рдиреАрд░рд╕ рд╣реЛрдЧреАред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдореВрд▓ рд╡рд┐рд╖рдп рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдФрд░ "рдЬрд╕реНрдЯ рд╡рд░реНрдХ" рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред

рд▓реЛрдЧ рдЖрдЬ рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡реЗ рджреЗрд╢реА рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рджрд┐рдП рдЧрдП рд╕рднреА рддрд░реНрдХреЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд╕рд╣реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рдЖрд╢рдп рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ (рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ) рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

рд╕рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рдХреИрд╕реЗ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдореБрдЭреЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВ:

~~~ powershell
$ a = `` `рдмреИрд╢
рдЦреЛрдЬреЛред -iname * $ pdf -print0 | xargs -0 рдПрд▓рдПрд╕-рдЯрд╛рдЗрдк

~~~

vs

```powershell
$a = bash -c @'
   find . -iname *$pdf -print0 | xargs -0 ls -ltr
'@

рд╡реЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЬреЛ рдХреБрдЫ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдореЗрдВ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдпрд╣рд╛рдВ рд╕рдорд░реНрдерд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдореВрд▓ рдХрдорд╛рдВрдб рдкрд░ рднреЗрдЬреЗ рдЧрдП рдкрд╛рда рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИред рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд╣ рдЙрд╕ рд╕рдореНрдореЗрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡реИрд╕реЗ C # рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╢рд╛рдпрдж CIL рдпрд╛ рддреЛ рдирд╣реАрдВ (C ++ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ)ред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрдХ (рдЬреИрд╕реЗ bash / рдЕрдЬрдЧрд░ / cmd) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдмрд╛рдбрд╝ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рд╣реИ, рдЬреЛ рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреЛрдб рдмрд╛рдбрд╝ рдХрд╛ рдЕрд░реНрде рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди imo рд╣реИред

рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдорд┐рд╢реНрд░рд┐рдд рднрд╛рд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд░рдВрдЧ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреА рдХреЛрдИ рднреА рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдл рдиреАрд░рд╕ рд╣реЛрдЧреАред

рдпрд╣ рдЕрднреА рднреА tmLanguage рдЖрдзрд╛рд░рд┐рдд рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реЛрдЧрд╛ред рд╡реЗ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдореНрдореАрдж рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╕реЗ рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдФрд░ "рдЬрд╕реНрдЯ рд╡рд░реНрдХ" рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред

рдирд┐рд╖реНрдкрдХреНрд╖ рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 145 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВред рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдпрд╣ рдзрд╛рдЧрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ рдПрдХ рдирдП, рд╕рдорд░реНрдкрд┐рдд рдзрд╛рдЧреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд╛рдЧреАрджрд╛рд░реА рджреЗрдЦреЗрдВрдЧреЗред

рд╡реИрд╕реЗ C # рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╢рд╛рдпрдж CIL рдпрд╛ рддреЛ рдирд╣реАрдВ (C ++ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ)ред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрдХ (рдЬреИрд╕реЗ bash / рдЕрдЬрдЧрд░ / cmd) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдмрд╛рдбрд╝ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рд╣реИ, рдЬреЛ рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреЛрдб рдмрд╛рдбрд╝ рдХрд╛ рдЕрд░реНрде рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди imo рд╣реИред

рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ @SeeminglyScience рдХреА рдЯрд┐рдкреНрдкрдгреА рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА Microsoft.CodeAnalysis.CSharp.Scripting рд╕рд╛рде рд╕рдВрдХрд▓рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ

рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ PowerShell рдореЗрдВ рдХреЛрдб рдлрд╝реЗрдВрд╕рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

    ```c:\mypath\MyArbitraryExe
        args to my arbitrary executable
    ```

рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕рдордЭ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рд╕реЗ

рдЬреЛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрджрд░ рд░рдЦрддреЗ рд╣реИрдВ, рддрд░реНрдХреЛрдВ рдХреЗ рдирд╣реАрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдПрд╕рдУ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдкреВрд░реНрдг рдкрде рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрджрд░ рд░рдЦрддреЗ рд╣реИрдВ, рддрд░реНрдХреЛрдВ рдХреЗ рдирд╣реАрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреИрд╢ / cmd / рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдПрд╕рдУ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдкреВрд░реНрдг рдкрде рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:

~ powershell$ a = ipconfig /all ~

рдпрд╛ рдкрд╣рд▓реЗ рдкрде рдХреЗ рд▓рд┐рдП рдордирдорд╛рдирд╛ exe рдЬреЛрдбрд╝реЗрдВред

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрджрд░ рд░рдЦрддреЗ рд╣реИрдВ, рддрд░реНрдХреЛрдВ рдХреЗ рдирд╣реАрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреИрд╢ / cmd / рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реИред

рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред CMD рднреА рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдПрд╕рдУ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдкреВрд░реНрдг рдкрде рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:

$ a = `` `ipconfig
/рд╕рдм

рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдЗрд╕ рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рдордирдорд╛рдиреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рд░реНрдХрдбрд╛рдЙрди рдореЗрдВ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЕрдЧрд░ рд╣рдо рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдирд┐рд░рдВрддрд░ рдЕрдиреБрд░реЛрдз рд╣реЛрдЧрд╛ред

рдпрд╣ рдПрдХ рдкреНрд░рднрд╛рд╡реА рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @jpsnover рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╢рд░рдгрд╛рд░реНрдереА рдХреЗ рд░реВрдк рдореЗрдВ #! рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛

рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рджреЛрдиреЛрдВ рд╢реЗрдмрдмреИрдВрдЧ рдФрд░ рдорд╛рд░реНрдХрдбрд╛рдЙрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ (рдФрд░ рджреЛрдиреЛрдВ рдкрд░рд┐рд╡рд░реНрддрди рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ)ред

рдЕрдЧрд░ рдХреЛрдИ рдХрд┐рд╕реА рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдкреЗрд╢ рдЖрдпрд╛ рд╣реИ рдЕрдм рд╕реБрд╡рд┐рдзрд╛ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рджред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ #! рдпрд╛ рдорд╛рд░реНрдХрдбрд╛рдЙрди рджреГрд╖реНрдЯрд┐рдХреЛрдг "рдЕрди-рдкреЙрд╡рд░рд╢реЗрд▓-рдорд┐рд▓рд╛рд╡рдЯреА" рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдореВрд▓ рдирд┐рд░реНрд╡рд╛рд╕рди рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реА рд╢реБрд░реБрдЖрддреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ ... рдЙрдо, рдИрд╡ред

_ рдпрджрд┐ рд╣рдо (рдФрд░ рдкреЙрд╡рд░рд╢реЗрд▓) рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ "рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрджрд┐ PowerShell рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ CommandAst рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддреЛ PowerShell рдХрдорд╛рдВрдб рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдХрдорд╛рдВрдб рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд╣реИ, рддреЛ PowerShell, NativeCommandProcessor рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рд╣рдо рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдирдП (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ NativeCommandProcessor) рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Ast рдХреА рд╕реАрдорд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧрд╛ (рддрд╛рдХрд┐ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ) рддрд╛рдХрд┐ OS рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо / рдкрде рдФрд░ рдмрд╛рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрд░реНрдХ рдпрд╛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд▓ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ "cmd" рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП"рдпрд╛" рдмреИрд╢"- рдЬреЛ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИg++ timer.cpp @conanbuildinfo.args -o timer --std=c++11 рддрд░рд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд▓ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП Get-/Set-Clipboard ред

рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬреЛ Ast рд╕реАрдорд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ (рдЬреЛ рдХрд┐ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ) рддрд╛рдХрд┐ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо / рдкрде рдФрд░ рдмрд╛рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрд░реНрдХ рдпрд╛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ OS рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрд╣рд╛рдБ рдореЗрд░реА рд╕реЛрдЪ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • рдЕрдХреНрд╖рдореНрдп рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕, рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╣рдж рддрдХ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдореВрд▓ рдПрдПрд╕рдЯреА рдХреЛ рджреВрд░ рдлреЗрдВрдХ рджреЗрдВ, рдпрд╛
  • рдЖрдк рдПрдПрд╕рдЯреА рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╡рд░реНрддрдорд╛рди NativeCommandProcessor рдХрд░рддрд╛ рд╣реИ) рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЪреАрдЬреЗрдВ рдЦреЛ рдЬрд╛рдПрдЧреА

рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЛрдХрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз рдЪреАрдЬреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЛ рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдиреНрдпреВрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рд╣рдореЗрд╢рд╛ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╣реЛрддрд╛ рд╣реИ)ред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдиреНрдпреВрд▓рд╛рдЗрди-рдХреЗрд╡рд▓ рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рдЪрдирдмрджреНрдз рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ "рджреЗрд╢реА рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░" рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЯреЛрдХрди рдмрдирд╛рдпреЗрдЧрд╛ рдХрд┐ рдЖрдЬ рд▓рд╛рдЗрди рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ - рдСрдкрд░реЗрдЯрд░ рд╕реЗ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рддрдХ "рдореВрд▓ рд╢реЗрд▓" рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП:

--% ps -o pid,args -C bash | awk '/running_script/ { print $1 }'

рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрди рд╣реЛрдЧрд╛:

--% ps -o pid,args -C bash | awk '/running_script/ { print $1 }'
|-||-----------------------------------------------------------|
 |                                  \
Native call operator        Invocation to be passed to native shell

(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдореВрд▓ рд╢реЗрд▓ рдореЗрдВ --% рдмрд╛рдж рднреА рд╕реАрдзреЗ рд╕реНрдкреЗрд╕ рднреЗрдЬрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ --% рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ)

рдлрд┐рд░ рдЗрд╕ рдЯреЛрдХрди рдХреЛ рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдПрдПрд╕рдЯреА рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

// We need to carefully work out what AST this inherits from
// This syntax has almost no interoperability with PowerShell by design,
// so can't implement fields like redirections or backgrounding faithfully.
// But in order to participate in pipelines and similar, would need to extend a more concrete class
public class NativeCallInvocationAst : StatementAst
{
    public string NativeInvocation { get; }
}

рдлрд┐рд░, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд╛рдЗрдк рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдореВрд▓ рд╢реЗрд▓ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдзреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рджреЗрд╢реА рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдм рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реЗ рдорди рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ:

  • рджреЗрд╢реА рдЦреЛрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдЪрд┐рдд рдард╣рд░рд╛рддреЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдирд╛) рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╡рд░реАрдпрддрд╛ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕реЗ рдЦреЛрдЬрдирд╛ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ)?
  • рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЦреЛрдЬ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛? рдХреНрдпрд╛ рдпреВрдЬрд░реНрд╕ рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдпрд╣рд╛рдВ рдХрд┐рддрдирд╛ рдХрдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдЬрдм рд╡реЗ | рдпрд╛ & рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
  • рдпрд╣рд╛рдВ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рд╡рд░реНрдмрдЯреАрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рддрдиреЗ рдкрд░рд┐рджреГрд╢реНрдп рд╕реЗрд╡рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрдИ рд▓реЛрдЧ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдЗрдирд╡реЛрдХреЗрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЗрди рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЙрджреНрдзрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
  • рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирдИ рднрд╛рд╖рд╛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рд╢рдмреНрджрд╢рдГ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ рджреЗрд╢реА рдЖрд╣реНрд╡рд╛рди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рдЖрд╣реНрд╡рд╛рди рддрдВрддреНрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ? рдЕрдЪреНрдЫреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдФрд░ рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рджреЛрдиреЛрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдФрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реЗрдВрдХрдирд╛ рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ (рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдордВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ) - рдХреНрдпрд╛ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреЗрд╢реА рдХреЙрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╛рд░ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдПрдХ рдирдП рдкреНрд░рд╛рдердорд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд░рдЪрдирд╛ рдХреА рдЬрд╛рдП? рдХреНрдпрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдХреЛ рдЕрдЫреВрддрд╛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ?
  • рдХреНрдпрд╛ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рдЗрд╕ рдкрд░ рдЕрдорд▓ рдХрд░реЗрдВрдЧреА рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ? рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрддрд░ рдкрд░? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ?

рдпрд╣рд╛рдБ рдореЗрд░реА рд╕реЛрдЪ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

@rjmholt CommandAst рдХреЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ "рдкреНрд░рд╕реНрддрд╛рд╡" рджреЗрдВ:

  • рдХреЗрд╕ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдореИрдВ рдирд┐рдпрдореЛрдВ рдХреЗ рд╣рд╡рд╛рд▓реЗ / рднрд╛рдЧрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдПрдХреНрд╕рд▓ рд╢рд╛рдмреНрджрд┐рдХ (рдХреЛрдИ рдкреНрд░рдХреНрд╖реЗрдк рдирд╣реАрдВ) рдЖрд╣реНрд╡рд╛рди рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ: g++ timer.cpp @conanbuildinfo.args -o timer --std=c++11 ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп-рдЖрд╕-рдкрд╛рд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдмреЛрд▓реА рдЬрд╛рддреА рд╣реИ e..g: g++ timer.cpp '@conanbuildinfo.args' -o timer --std=c++11 рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдлреИрд▓реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреИрд╕реЗ:
tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz \
    --exclude=/proc \
    --exclude=/lost+found 

рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб ( \ рд▓рд┐рдП рд╕реНрд╡реИрдк рдмреИрдХрдЯрд┐рдХ) рдЬреИрд╕реЗ:

tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz `
    --exclude=/proc `
    --exclude=/lost+found
  • рдХреЗрд╕ 1 рдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдПрд╕ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рдирд┐рд░реНрд╡рд╛рд╕рди рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ: g++ $CppFile @conanbuildinfo.args -o timer --std=c++11 ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХрд╛рдо-рдЖрд╕-рдкрд╛рд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХреНрдпрд╛ (рд╕рд┐рдВрдЧрд▓ рдпрд╛ рдбрдмрд▓) рдФрд░ рдХреНрдпрд╛ рдИ рд╕реЗ рдмрдЪрдирд╛ рд╣реИ ..g: g++ $CppFile '@conanbuildinfo.args' -o timer --std=c++11 рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдлреИрд▓реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреИрд╕реЗ:
tar -cvpzf "/share/Recovery/Snapshots/${ComputerName}_`$(date +%Y%m%d).tar.gz" \
    --exclude=/proc \
    --exclude=/lost+found 

рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб, рдбрдмрд▓-рдЙрджреНрдзрд░рдг рдкрд╣рд▓реЗ arg, \ рд▓рд┐рдП backtick рд╕реНрд╡реИрдк рдХрд░реЗрдВ рдФрд░ `$ (рджрд┐рдирд╛рдВрдХ + ...) рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ $ рдмрдЪ рдЬрд╛рдПрдВред

  • рдХреЗрд╕ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдореИрдВ рдПрдХ рдЕрдиреНрдп рд╢реЗрд▓ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рдбрдВрдмрдирд╛рдмрджреНрдз рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ: ps -o pid,args -C bash | awk '/running_script/ { print $1 }' рдФрд░ wsl ls $foo && echo $PWD ред _рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ред_ рд╡рд░реНрддрдорд╛рди рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП bash рдХрдорд╛рдВрдб рдЙрджреНрдзреГрдд рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕реЗ: bash -c 'ps -o pid,args -C bash | awk ''/-bash/ { print $1 }''' ред рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБ-рддрд╛рд░ рддрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:
ps -o pid,args -C bash | \
awk '/running_script/ { print $1 }'
  • рдХреЗрд╕ 2 рдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдореИрдВ рдХреБрдЫ рдкреАрдПрд╕ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреНрдп рд╢реЗрд▓ рдореЗрдВ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрдб рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ?

  • рдХреЗрд╕ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП npm run $scriptName рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрд░реНрдерд╛рдд рдЪрд░реЛрдВ рдХреЛ рдЗрдВрдЯрд░рдкреЛрд▓ рдХрд░реЗрдВ ред (рдпрд╣ рдирд┐рд╣рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ interpolating рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛рдиреА g++ $CppFile @conanbuildinfo.args -o timer --std=c++11 рд▓рд┐рдП рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХреНрдпрд╛ рд╣рдо рдЙрд╕ рдкрд░ рдХреЗрд╡рд▓ рдкрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рднрд╛рдЧрдиреЗ рдХреЗ рдирд┐рдпрдо рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ?

рдпреЗ рд╕рдВрднрд╡рддрдпрд╛ рд╕рд╣реА (рдпрд╛ рд╕рднреА) рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдирд╣реАрдВ) ) рдЧреНрд░рд╛рд╣рдХ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдореБрдЭреЗ "рд╢реЗрд▓ рдЗрдирд╡реЛрдХреЗрд╢рди" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдПрдХ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд░рддрд╛ рд╣реИред рд╡рдирд╡рд╛рд╕ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@rkeithhill рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдЙрдарддреЗ рд╣реБрдП , рдореИрдВ рднреА рдЖрдкрдХреА

рдХреНрдпрд╛ ins ... рдЙрд╕ & cmd --% ... рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ?

--% рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, _parameter_ (рдкреНрд░рддреАрдХ) рдлрд╝реЙрд░реНрдо - рдЬрд┐рд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХрд╛ рдЙрдкрдпреЛрдЧ cmd /c --% рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ _multi-command_ cmd рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ^ рдмрдЪреА рд╣реБрдИ рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВред), рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкрд╣рд▓реЗ | _PowerShell_ рдХреЗ рдкрд╛рдЗрдк рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ & рдХреЛ рд╡рд░реНрдмреЗрдЯрд┐рдо рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд╣реА рдпреВрдирд┐рдХреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ --% рдЖрдо рддреМрд░ рдкрд░ рдкрд╛рд╕-рдкрд╛рд╕ рдмреЗрдХрд╛рд░ рд╣реИ, рдФрд░ sh -c рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ sh рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ _single_ рддрд░реНрдХ (рдЬреИрд╕реЗ, sh -c --% echo hi рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ echo рдЕрдХреЗрд▓реЗ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ)ред

ins , рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдкрд╛рд╕-рдереНрд░реВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рд╕реАрдорд╛рдВрдХрд┐рдд рдХрд░рдХреЗ _as рдПрдХ рдПрдХрд▓ string_ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, _PowerShow_ рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдФрд░ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд --% _statement_ рдПрдХ _-рдЕрдВрдд рд╡рд╛рд▓реА рд╕реНрдЯреНрд░реАрдЯ_ рд╣реИ :

  • рд╡рд╣рд╛рдБ _no рд╕рдВрдХреНрд░рдордг рдкрде_ рдХреЛ preexisting рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ _exactly is_ рдХреЗ рд░реВрдк рдореЗрдВ _PowerShell_ рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдорд╛рдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИред

    • рдПрдХрдорд╛рддреНрд░ - рдЕрд╕реНрдкрд╖реНрдЯ рдФрд░ рдмреЛрдЭрд┐рд▓ - рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ _auxiliary рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ_ рдЬреЛ рдХрд┐ рдмреНрдпрд╛рдЬ рдХреЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рддрдм рд╕рдВрджрд░реНрдн ( %...% $... ) рдХреЗ рд╕рд╛рде (рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдореВрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиред
  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ PowerShell рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ --% рдмрдпрд╛рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдЕрдЬреАрдмрддрд╛ рд╣реИред

    • рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЗрд╢реА рд╢реЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз _non_ рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдХрд╛рд░рдг рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕ рдПрдХреАрдХрд░рдг рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, _raw byte data_ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдПрдХ рдордзреНрдпрд╡рд░реНрддреА) рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдФрд░ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛ _strings рднреЗрдЬрдирд╛_ рдореВрд▓ рдкрд╛рдЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ SO рдЙрддреНрддрд░ рдХреЛ рджреЗрдЦреЗрдВред
  • --% _parameter_ рдХрд╛ рдпреВрдирд┐рдХрдиреЗрд╕ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реЛрдирд╛ рднреА рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╖рдо рд╡рд┐рд╖рдорддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ: рдпрджрд┐ --% _statement_ Unter рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ --% _parameter_ рдХреНрдпреЛрдВ рдирд╣реАрдВред ? (рдЬреИрд╕реЗ,
    /bin/echo --% 'hi "noon"' рд╡рд░реНрдмреЗрдЯрд┐рдо 'hi noon' (рдЕрдкреЗрдХреНрд╖рд┐рдд hi "noon" рдмрдЬрд╛рдп), echo _two_ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг, рд╢рдмреНрджрд╢рдГ 'hi рдФрд░ noon' , рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдФрд░ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЫреАрди рд▓рд┐рдП рдЧрдП)ред


ins , --% рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдмрд╕ рдПрдХ _convenience рдЖрд╡рд░рдг_ cmd /c рдФрд░ sh -c , рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ:

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдХрдо рд╕реЗ рдХрдо _temporately_, рдЬрдм рддрдХ # 1995 рддрдп рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рдХреНрдпреЛрдВрдХрд┐ sh -c '...' рд╕реАрдзреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб " рд╕рд╛рде рддрд░реНрдХ рдХреЛ рдареАрдХ рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

  • рд╡рд┐рдВрдбреЛрдЬ рдкрд░ _Invariably_, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ _as-is_ рд╕реЗ cmd lpCommandLine CreateProcess (рдЬреЛ --% рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) _one_ рдХрдорд╛рдВрдб рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг); рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ _single string_ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ "..." рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ, рдлрд┐рд░ рд╕реЗ # 1995 рдХреЗ рдХрд╛рд░рдг рдордЬрдмреВрддреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


_Argument_ рдкрд╛рд╕рд┐рдВрдЧ рдХреА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ _via stdin_ (рдЬреЛ ins рдФрд░ рднреА рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ), рдпрд╛рдиреА _pipe_ рдХреЛ рд╢реЗрд▓ рдПрдЧреНрдЬреАрдХреНрдпреВрдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди / рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдХреНрд╕реНрдЯ:

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ _stdin_ рд╕реЗ sh рдХреЛрдб рдкрд╛рд╕ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ _script file_ рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ (рдмрд╕ sh -c '<code>' is ):
PSonUnix> @'
echo '{ "foo": "bar" }' | cat -n
'@ | sh

     1  { "foo": "bar" }
  • рдХрд╛рд╢, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ cmd рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЕрдкрдиреЗ рд▓реЛрдЧреЛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд╡рд░рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдЧреВрдБрдЬрддрд╛ рд╣реИ:
PSonWin> 'date /t & ver' | cmd

Microsoft Windows [Version 10.0.18363.836]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\jdoe>date /t & ver
Sun 07/26/2020

Microsoft Windows [Version 10.0.18363.836]

C:\Users\jdoe>

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, PowerShell рдЦреБрдж рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреИрддрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: # 3223 рджреЗрдЦреЗрдВ


рдЬреИрд╕реЗ sh рдФрд░ рд╕рднреА рдкреНрд░рдореБрдЦ POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗ ( dash , bash , ksh , zsh ), рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ _do_ рдареАрдХ рд╕реЗ рдЬреИрд╕реЗ рдХрд┐ python , node , ruby , рдФрд░ perl рдЬреИрд╕реЗ рд╕реНрдЯрдбреА-рдЕрд╕-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВред

PS> 'print("hi")' | python

hi

_PowerShell_ рдЪрд░ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдорд╛рдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк / рд╕рдВрдШрдирди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ:

PS> $foo = 'bar'; "print(`"$foo`")" | python

bar

рдпрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рддрд░реНрдХ-рдкрд╛рд╕рд┐рдВрдЧ рдлреАрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

PS> @'
import sys
print(sys.argv[1])
'@ | python - bar

bar

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП _no_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рди рддреЛ --% рдХрдерди, рди рд╣реА #! рдХрдерди, рдФрд░ рди рд╣реА рдорд╛рд░реНрдХрдбрд╛рдЙрди рдХреЛрдб рдмреНрд▓реЙрдХ - рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХрдореА рд╣реЛрдЧреА PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП; рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рдХреЗрд╡рд▓ рдЙрд╕ рд╢реЗрд▓ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, # 1995 рддрдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред

  • рдПрдХ рдбрд┐рдмреЗрдЯреЗрдмрд▓ рд╡реЗрд░рд┐рдПрд╢рди /bin/bash ( /bin/sh ) рдХреЗ рд╕рд╛рде (рдЕрдпреЛрдЧреНрдп) рдХрдордмреИрдХ рдХреЗ рд╕рд╛рде) рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рдЬрдмрдХрд┐ рдХреЛрдИ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЗрдВ рдХреЗрд╡рд▓ POSIX- рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдВ, Bash-isms рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди (рдЧреИрд░- POSIX рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛ /bin/sh рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ) bash рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡рд╣рд╛рдБ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

@joeyaiello

рдпрд╣ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рд╛рдн # 1995 рдХреЗ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдордирдореМрдЬреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдХрдЯ-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдлреАрдЪрд░ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ - рдореБрдЦреНрдп рд░реВрдк рд╕реЗ _interactive_ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП - рдПрдХ (рдЕрдЬреАрдм, рд╕реБрд╡рд┐рдзрд╛-рд╕реАрдорд┐рдд) рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ, рдЬрдмрдХрд┐ рдкрд╛рд╡рд░рд╕реНрд▓реЗ рдХреА рдореМрд▓рд┐рдХ рдЕрдХреНрд╖рдорддрд╛ рдЦрд╛рд▓реА рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб " рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдФрд░ рддрд░реНрдХред

рд▓реЗрдХрд┐рди рдореИрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрдВрдЧрд▓реА рдПрди рдорд╛рд╕ рдореЗрдВ # 1995 рдХреЛ рдорд╛рд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЬрд┐рди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП

рдлрд┐рд░, рдореИрдВ рдПрдХ рд╢реЗрд▓ рдХрд╛ рддрд░реНрдХ рджреВрдВрдЧрд╛

# On Unix
PS> /bin/echo '{ "foo": "bar" }'

{ foo: bar }

@rjmholt CommandAst рдХреЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде

рд╣рд╛рдБ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдПрдПрд╕рдЯреА рдХреЗ рдЖрд╡рдВрдЯрди рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рднрд╛рд╖рд╛ рдХреЛ рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрд╡рдВрдЯрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрдирдкреБрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ bash / cmd рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ PowerShell рдореБрджреНрджреЛрдВ рдХреЛ рдорд╛рд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

рд╡рд░реНрддрдорд╛рди PowerShell рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

--% my_command "\" "

рдкрд░реНрд╕, рд▓реЗрдХрд┐рди рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:

--% my_command "\"    "\"

(рд╣рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ 4 рд╕реНрдерд╛рди рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди PowerShell рдПрдХ рд╕рд░рдгреА рдореЗрдВ рджреЛ рддрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреЗрдЦрддрд╛ рд╣реИ)

@rjmholt , рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕рднреА рдорд╣рд╛рди рдкреНрд░рд╢реНрди, рдЬреЛ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╣реА рдЙрддреНрддрд░ рд╣реИ: рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджреЗрд╢реА рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП:

рдХреНрдпрд╛ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рдЗрд╕ рдкрд░ рдЕрдорд▓ рдХрд░реЗрдВрдЧреА рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ? рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрддрд░ рдкрд░? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ?

рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реНрддрд░ рдкрд░ _explicit delimiters_ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ _interpolation_ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛ рд╣реБрдИ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, perl рдореЗрдВ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП `...` , рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдХреНрд╕ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
my $foo='/'; print `ls $foo | cat -n`

рдореБрдЦреНрдп рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЙрд▓рд░ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ - рдпреЗ рджреЛрдиреЛрдВ --% рдмрдпрд╛рди рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдЧрд╛рдпрдм рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо _could_ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдирдП _operator_ (рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реАрдорд╛рдВрдХрдХ-рдЖрдзрд╛рд░рд┐рдд, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕рд┐рдВрдЧ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЗрд╕реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
ins "ls $foo | cat -n" (рдпрд╛ рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде) рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛ рдХреЛ рдмреЛрдЭ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░реЗрдВрдЧреЗред

perl рдПрдХ (рдЙрдЪрд┐рдд) рд╕рд┐рдВрдЯреИрдХреНрд╕-рд╕реНрддрд░реАрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдХ рд╢реЗрд▓_ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реЗрд▓ рдХреЙрд▓ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо _are_ рдПрдХ рд╢реЗрд▓ (рднреА), рдФрд░ рд╢реЗрд▓-рд╕реНрдЯрд╛рдЗрд▓ рдЗрдирд╡реЛрдХреЗрд╢рди _directly_ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ (рдпрджреНрдпрдкрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг - # 1995 рджреЗрдЦреЗрдВ)ред
рд╡рд┐рднрд┐рдиреНрди рд╢реЗрд▓ рдХреЗ_ рдЗрдирд╡реЙрдЗрд╕ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИред

@iSazonov

_ рдпрджрд┐ рд╣рдо (рдФрд░ рдкреЙрд╡рд░рд╢реЗрд▓) рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ "рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрджрд┐ PowerShell рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ CommandAst рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддреЛ PowerShell рдХрдорд╛рдВрдб рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдХрдорд╛рдВрдб рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд╣реИ, рддреЛ PowerShell, NativeCommandProcessor рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рд╣рдо рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдирдП (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ NativeCommandProcessor) рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Ast рдХреА рд╕реАрдорд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧрд╛ (рддрд╛рдХрд┐ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ) рддрд╛рдХрд┐ OS рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо / рдкрде рдФрд░ рдмрд╛рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрд░реНрдХ рдпрд╛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд▓ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ "cmd" рдпрд╛ "рдмреИрд╢" рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬреЛ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди g++ timer.cpp @conanbuildinfo.args -o timer --std=c++11 рддрд░рд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧреАред

рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХрднреА рднреА рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА PowerShell рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдпрджрд┐ рд╣рдордиреЗ рд╡рд╣ рд╕рдм рдХрд┐рдпрд╛? рддреЛ рдЬреИрд╕реЗ sc.exe query $serviceName $serviceName рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛?

рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХрднреА рднреА рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА PowerShell рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдпрджрд┐ рд╣рдордиреЗ рд╡рд╣ рд╕рдм рдХрд┐рдпрд╛? рддреЛ рдЬреИрд╕реЗ sc.exe query $serviceName рд╢рд╛рдмреНрджрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ $serviceName рдкрд╛рд╕ рд╣реЛрдЧрд╛?

--% рд╡рд┐рдХрд▓реНрдк рдЙрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред

sc.exe query $serviceName &"<cmd>" рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ

--% рд╡рд┐рдХрд▓реНрдк рдЙрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред

sc.exe query $serviceName &"<cmd>" рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рд╛рдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ @iSazonov рдХрд╛ рдЬрд┐рдХреНрд░ рд╣реИред рдореИрдВ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ @iSazonov рдХрд╛ рдЬрд┐рдХреНрд░ рд╣реИред рдореИрдВ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рднрдЧрд╡рд╛рди, рдореБрдЭреЗ рдЖрд╢рд╛ рдирд╣реАрдВ рд╣реИред

рднрдЧрд╡рд╛рди, рдореБрдЭреЗ рдЖрд╢рд╛ рдирд╣реАрдВ рд╣реИред

рдХрднреА рдХрднреА рдЬрдм рдЖрдк рдЕрдореВрд░реНрдд рд╡рд┐рдЪрд╛рд░ рдордВрдерди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕реНрдкрд╖реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рд╣реА рдпрд╣ рд╕реЛрдЪрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред

рдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реИ and

@essentialexch , рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛, рдкреБрдирдГ:

sc.exe query $serviceName &"<cmd>" рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ

& "<cmd>" рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм <cmd> рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗрд╡рд▓ рдПрдХ рдЖрджреЗрд╢ _name рдпрд╛ path_ рдХреЗ рд▓рд┐рдП рд╣реЛ, _not рддрд░реНрдХреЛрдВ рд╕рд╣рд┐рдд - рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП - рдФрд░ рдЙрдиреНрд╣реЗрдВ se "...." рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджреНрдзрд░рдг (рдЬреИрд╕реЗ,
$exe = 'findstr'; & "where.exe $exe" рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдлрд▓; & "where.exe" $exe рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдпрд╣рд╛рдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ; рдпрджрд┐ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ & рддрдм рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ)

рд╣рд╛рдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ @iSazonov рдХрд╛ рдЬрд┐рдХреНрд░ рд╣реИред рдореИрдВ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ # 1995 (рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде) рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реИред рдХрд╛рд░рдг рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдбреЗрдореЛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрдореЛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ @ mklement0 рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХреЙрд▓ рдореВрд▓ рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкрд░реНрд╕, рд▓реЗрдХрд┐рди рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:

@rjmholt рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВред
CommandAst рдХрд╛ рдкрд╣рд▓рд╛ рдмрдЪреНрдЪрд╛ StringConstantExpressionAst рд╣реИ, рдЬреЛ рджреЗрд╢реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде BareWord рд╣реИред рд╣рдо CommandAst Extent рд╕реЗ рдирдВрдЧреЗ рд╢рдмреНрдж рдХреЛ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ ast-s рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рднреА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП ast рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдиреАрдЪреЗ рдореИрдВ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рд╡реГрджреНрдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЬрдЯрд┐рд▓ рджрд┐рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ __w рдЖрд╕рд╛рди рдСрдкреНрдЯ-рдЖрдЙрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ @ рд╕реНрдЯреАрд╡-рдПрдордПрд╕рдПрдлрдЯреА рдХреЗ рдЗрд░рд╛рджреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдереЗред
рдореИрдВ @TSlivede рдФрд░ @ mklement0 рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ # 1995 рдФрд░ # 12975 рдЬреИрд╕реА рд╕рднреА _fundamental_ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП _simplify_ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

__ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдЕрдзрд┐рдХ рдХрд░рдирд╛ рд╣реИ ред__ (рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдпрд╛ cmdlet рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)


рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЙрдореНрдореАрджреЛрдВ рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдКрдкрд░ @rkeithhill рдХрд╛ рд╢рд╛рдирджрд╛рд░ рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВ

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
    рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рдВрдЧрд▓ / рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ / рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВред
    рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдпрд╣ рд╕рдордЭрдирд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ / рдкрд░рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдпрд╛ рд╢реЗрд▓ рдХреЛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

    • рдХрд┐рд╕реА рднреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп - рдХрдорд╛рдВрдб рдРрдк рдирд╛рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИ

      • рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рд╕рд╛рде / рдмрд┐рдирд╛

      • рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди рдкрд░ / рдорд▓реНрдЯреА рд▓рд╛рдЗрди рдкрд░

    • рд╢реЗрд▓ рд╢рд╛рдпрдж рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрд░реНрдХ (s) рдПрдХ _script_ рд╣реИ

      • рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд╖реЗрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдВрдЧрд▓ рдФрд░ рдорд▓реНрдЯреА рд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ

      • рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд╖реЗрдк рдХреЛ рдЕрдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдВрдЧрд▓ рдФрд░ рдорд▓реНрдЯреА рд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ

    рд╡рд┐рдЪрд╛рд░:
    рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
    рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (рдмреИрд╢ рдореЗрдВ, `рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐:
    (1) рдПрдХ рд╢реЗрд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
    (2) рд╢рд╛рдпрдж рдХрд┐рд╕реА рднреА рдмрд╣реБрд╕реНрддрд░реАрдп рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдПрдХ рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╛рд░реНрд╕рд┐рдВрдЧ (рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рднрд╛рдЧрдиреЗ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд╡рд╛рд▓реА рддрд░реНрдХ рд╕реВрдЪреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛)
    (3) рд╣рдо PSReadline рдореЗрдВ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрдлрд╝рд░ рдХреЛ рд╕рд╣реА PowerShell рдХрдорд╛рдВрдб рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди рдФрд░ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    • рд╢рд╛рдпрдж рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    • рджреЗрдЦреЗрдВ 2 - (2) - рд╣рдореЗрд╢рд╛ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдореИрдВ рдЕрдзрд┐рдХ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХреНрдпреЛрдВрдХрд┐ @TSlivede рдФрд░ @ mklement0 рдкрд╣рд▓реЗ рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рдереЗ рд▓реЗрдХрд┐рди рдЬреЛ рдЕрдм рдкрд░рд┐рд╡рд░реНрддрди (рдПрд╕) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ (рдФрд░ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛ , рд╕рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ (@

рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрдирд╡реЛрдХ-рд╢реЗрд▓ (рдЗрдирд╡реЛрдХ-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓), рдЯреЗрд╕реНрдЯ-рдЖрд░реНрдЧреНрдпреВрдореЗрдВрдЯреНрд╕ (рдЬреИрд╕реЗ echoargs.exe рдХреА рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреЛрдж рд▓реЗрдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП cmdlets рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореВрд▓ рдРрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорджрдж рджрд┐рдЦрд╛рддрд╛ рд╣реИ, Convert-Arguments ( рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рд╕рд╣реА рдмрдЪреА рджрд▓реАрд▓реЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛)ред

рдкреБрдирд╢реНрдЪ: рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдПрдХрд▓ рд▓рд╛рдЗрди рд╡реНрдпрд╡рд╣рд╛рд░ рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рдЖрд╕рд╛рдиреА рд╕реЗ рд░рди рдЯрд╛рдЗрдо рдореЗрдВ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ-рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (рдмреИрд╢ рдореЗрдВ, `рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

\ bash рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдирд╣реАрдВ рд╣реИред

рдХрд╛рд░рдг рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдбреЗрдореЛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрдореЛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ @ mklement0 рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХреЙрд▓ рдореВрд▓ рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЙрд╕реА рддрд░рд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╣рдо рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд╕рднреА рдХреАрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рд╕рд┐рд░реНрдл рд░реЗрдкреЛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмреНрд░реЗрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред

@SeeminglyScience рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╣реИрдВред рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди рджреЗрд╢реА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдкрд╛рд░реНрд╕рд░ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рднреА рдордХреНрдЦреА рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рд╛рдЧреВ рд╣реЛред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рднреА рдордХреНрдЦреА рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рд╛рдЧреВ рд╣реЛред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреЛ рдЪреАрдЬрд╝ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдордХреНрдЦреА рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдПрдХ рдХреЙрд▓ рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде)ред

@iSazonov

_ рдпрджрд┐ рд╣рдо (рдФрд░ рдкреЙрд╡рд░рд╢реЗрд▓) рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ "рджреЗрд╢реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрджрд┐ PowerShell рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ CommandAst рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддреЛ PowerShell рдХрдорд╛рдВрдб рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдХрдорд╛рдВрдб рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд╣реИ, рддреЛ PowerShell, NativeCommandProcessor рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рд╣рдо рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдирдП (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ NativeCommandProcessor) рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Ast рдХреА рд╕реАрдорд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧрд╛ (рддрд╛рдХрд┐ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ) рддрд╛рдХрд┐ OS рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╛рдо / рдкрде рдФрд░ рдмрд╛рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрд░реНрдХ рдпрд╛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд▓ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ "cmd" рдпрд╛ "рдмреИрд╢" рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬреЛ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдПрдХ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди g++ timer.cpp @conanbuildinfo.args -o timer --std=c++11 рддрд░рд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧреАред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ: рдХреНрдпрд╛ рдЖрдк рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рднреА рдкрд╛рд╡рд░рд╕реИрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ?

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ: рдХреНрдпрд╛ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣рд╛ рд╣реИ

/bin/echo (1..5)

рдЕрдзрд┐рдХрд╛рд░ рдореЗрдВ рдЕрдм 1 2 3 4 5 рдирд╣реАрдВ рдбрд╛рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╢рд╛рдмреНрджрд┐рдХ (1..5) рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЕрдЧрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдЬреЛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рднрдпрд╛рдирдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдирд╣реАрдВ рд╕рд░рд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдЕрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЖрдВрддрд░рд┐рдХ cmdlets рд╕реЗ рднрд┐рдиреНрди рд╣реЛ) рдФрд░ рдпрд╣ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ # 1995 IMHO рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд ...

@rjmholt
рдКрдкрд░ рд╕реЗ :

  • рдХреНрдпрд╛ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рдЗрд╕ рдкрд░ рдЕрдорд▓ рдХрд░реЗрдВрдЧреА рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ? рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрддрд░ рдкрд░? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ?

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ, рдЬреЛ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рд╡рд╣ ! рдСрдкрд░реЗрдЯрд░ рд╣реЛрдЧреА :

рдЪрд▓ рд░рд╣рд╛ рд╣реИ ipython outputs рдореЗрдВ !ps -'fax' || true :

  261 pts/0    Sl     0:00          \_ /usr/bin/python /usr/bin/ipython
  311 pts/0    S      0:00              \_ /bin/bash -c ps -'fax' || true
  312 pts/0    R      0:00                  \_ ps -fax

( рдкреАрдПрд╕ рддрд░реНрдХреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрджреНрдзрд░рдг рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди ps -'fax' || true рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА рдЙрд╕ рдЖрджреЗрд╢ ( {pyvar} ) рдореЗрдВ рдЕрдЬрдЧрд░ рдЪрд░ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдк рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдФрд░ @ mklement0 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди, ipython рдХреЗрд╡рд▓ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдХ рдЦреЛрд▓ рдирд╣реАрдВ рд╣реИ

рдЕрдЧрд░ ipython рдХреЗрд╡рд▓ python syntax рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рддреЛ рдпрд╣ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЖрдЧреЗ рдХреЗ рдХрдорд╛рдВрдб рдХреЛ bash рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП bash рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред Powershell рджреВрд╕рд░реА рдУрд░ рджрд╛рд╡реЛрдВ рдкрд░, рдПрдХ рдЦреЛрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП (# 1995 рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ, рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЦреЛрд▓ рд╣реИ) рддреЛ рдпрд╣ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдлреЛрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реЛрдЧрд╛ред

рдЕрдЧрд░ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░рдг (рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдореИрдВ "рдХреЙрд▓ рд╢реЗрд▓ рдСрдкрд░реЗрдЯрд░" рдХреЗ рд░реВрдк рдореЗрдВ --% рдмрдЬрд╛рдп ! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред

! рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ ! рдЙрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП ipython рд╕реЗ рд╣реИ (рдпрд╛ vim рдХрдорд╛рдВрдб рдореЛрдб рд╕реЗ) рдФрд░ less рдпрд╛ ftp )

рджреВрд╕рд░реА рдУрд░ --% рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг: --% рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИ "рдкрд╛рд╕ рдХреЗ рд╕рд╛рдорд╛рди рдХреЛ рджреВрд╕рд░реЗ рд╢реЗрд▓" рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ред рд╡рд░реНрддрдорд╛рди --% cmd рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ: рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ)ред рдпрд╣ рдмрдЪ рдЪрд╛рд░реНрдЯ ^ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рд╣рдж рддрдХ рдЙрдкрдпреЛрдЧреА --% рдореЗрдВ рд╢рдмреНрджрд╢рдГ рд╕рд╛рдордЧреНрд░реА рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ lpCommandLine - рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╣реИ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд "рдХреЙрд▓ рдЦреЛрд▓ рдСрдкрд░реЗрдЯрд░" рдкрд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд "рдХреЙрд▓ рд╢реЗрд▓ рдСрдкрд░реЗрдЯрд░" рдФрд░ рдореМрдЬреВрджрд╛ --% рдмреАрдЪ рдПрдХ рдФрд░ рдЕрдВрддрд░ (рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛): рдПрдХ рдкрд╛рдЗрдк рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдирд╣реАрдВ - рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рднреНрд░рд╛рдордХред ! рджреВрд╕рд░реА рддрд░рдл | рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдм рддрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ (ipython, vim, less, ed, рдЖрджрд┐)ред

HELP about_Logical_Operators -S

рд╣рд╛рдБ, ! рд╕реНрд╡рдпрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реЗрдз рдСрдкрд░реЗрдЯрд░ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ BTW &! - рдПрдХ "рдХреЙрд▓ рджреЗрд╢реА / рд╢реЗрд▓" рдСрдкрд░реЗрдЯрд░ рдХреА рддрд░рд╣ред

рдХрд╛рд╢ @TSlivede рдиреЗ "рдЙрдореНрдореАрдж рдирд╣реАрдВ" рднрд╛рдЧ рдкрд░ рдЕрдзрд┐рдХ рдЬреЛрд░ рджрд┐рдпрд╛ рд╣реЛрддрд╛, рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ "рдЕрдЧрд░ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдирд╣реАрдВ)"

  • рдХреЛрдИ рднреА рдСрдкрд░реЗрдЯрд░ / рдХрдерди _ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде_ I-want-to-use-PowerShell-values-of-native-command-line рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ $ рдХрд╛ рдЙрдкрдпреЛрдЧ _both_ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕рдЬрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ PowerShell рдФрд░ POSIX рдЬреИрд╕реЗ рдЧреЛрд▓реЗред

  • рдкреВрд░реЗ рджреЗрд╢реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рднреА рдСрдкрд░реЗрдЯрд░ / рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ _without рд╕реНрдкрд╖реНрдЯ рд╕реАрдорд╛рдВрдХ_ рд╕реЗ рдЬрд╣рд╛рдВ-рдЬрд╣рд╛рдВ-рдЬрд╣рд╛рдВ-рдЬрд╣рд╛рдВ рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЖрдЬ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрдерди рдкрд░ рдХреЛрдИ рд╕рдордЭреМрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ 7.1 w / рдПрдХ рд╕реНрдерд┐рд░ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рдкрд╛рд╡рд░рд╢реЗрд▓ / рдкрд╛рд╡рд░рд╢реЗрд▓-рд╕рдорд┐рддрд┐ рдиреЗ рдЖрдЬ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрдерди рдкрд░ рдХреЛрдИ рд╕рдордЭреМрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ 7.1 w / рдПрдХ рд╕реНрдерд┐рд░ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

182 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ!

рдЗрд╕ рдкрд░ рдХреБрдЫ рдмреЗрд╣рддрд░реАрди рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИ! рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рднреА рдирдИ рдЯрд┐рдкреНрдкрдгреА рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рд╣рдо рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ PSGallery рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд Invoke-NativeCommand рдкреНрд░рдХрд╛рд░ рдХреЗ cmdlet рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/PowerShell/PowerShell/issues/13068#issuecomment -662732627 рдкрд░ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╕рдорд╛рдзрд╛рди рдерд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЖрдо рд╕рд╣рдорддрд┐ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдПрдХ рд╕рдордЭреМрддрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд╣реАрдВ, рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ-рд▓рд╛рдЗрдирд░ рдПрд╕рдУ рд╕рдорд╛рдзрд╛рди рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рд░рд╛рдп рдореЗрдВред

@essentialexch рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PowerShell рдЯреАрдо рдореЗрдВ рднреА рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИ

рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реНрдердЧрд┐рдд рд╣реИ рдХрд┐ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛

рд╣рдо рдЗрдирд╡реЛрдХ-рд╢реЗрд▓ (рдЗрдирд╡реЛрдХ-рдиреЗрдЯрд┐рд╡рд╢реЗрд▓), рдЯреЗрд╕реНрдЯ-рдЖрд░реНрдЧреНрдпреВрдореЗрдВрдЯреНрд╕ (рдЬреИрд╕реЗ echoargs.exe рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдРрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорджрдж рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП), рдХрдиреНрд╡рд░реНрдЯ-рддрд░реНрдХ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рд▓рд┐рдП рдирдП рдЧреЛрдж рд▓реЗрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╣реА рдмрдЪ рдЧрдП рддрд░реНрдХ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрд╕реНрдЯ-рддрд░реНрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, Native , ( Install-Module Native -Scope CurrentUser ) рдЬреЛ рдореИрдВ рдЖрдк рд╕рднреА рдХреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЬрд┐рдирдХреА рдЖрдЬреНрдЮрд╛ рдореИрдВ рдиреАрдЪреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ; рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдКрдкрд░ рд╣реИрдВ ред

рдпрджрд┐ рд╣рдо рдХрднреА рднреА рд╡реИрдЪрд╛рд░рд┐рдХ рдХреЛрд╣рд░реЗ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдлреНрд░реЗрдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
_N рдХреА рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ_ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рджреЗрд╢реА-рд╢реЗрд▓ рдХреЙрд▓]:

рдЖрдк рдПрдХ _indirect рдХрдорд╛рдВрдб_ (рдХреЗрд╕ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдпрд╛ рдкреВрд░реЗ _multi- рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди_ (рдХреЗрд╕ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рджреЗрд╢реА рд╢реЗрд▓_ (рдЗрд╕ рдореБрджреНрджреЗ) рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:

  • рдЪреВрдВрдХрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдХрдорд╛рдВрдб (рд▓рд╛рдЗрди) рдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ_ рдХреЛ рд▓рдХреНрд╖реНрдп рд╢реЗрд▓ рдореЗрдВ, _it_ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; PowerShell рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк, рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЙрдкрдпреЛрдЧ рдХреЗрд╕ 2a) рдореЗрдВ PowerShell рдорд╛рди рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • ins ( Invoke-NativeShell ) рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
# Use case 1: Single executable call with line continuation, on Unix.
@'
tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz \
    --exclude=/proc \
    --exclude=/lost+found 
'@ | ins

# Use case 2: Entire Bash command line (also with line continuation)
@'
ps -o pid,args | awk \
  '/pwsh/ { print $1 }'
'@ | ins

# Use case 2a: Entire Bash command line (also with line continuation) with string interpolation.
# Note the double-quoted here-string and the need to escape the $ that is for Bash as `$
$fields = 'pid,args'
@"
ps -o $fields | awk \
  '/pwsh/ { print `$1 }'
"@ | ins

# Alternative to use case 2a: pass the PowerShell value *as a pass-through argument*,
# which allows passing the script verbatim.
# Bash sees the pass-through arguments as $1, ... (note that the `awk` $1 is unrelated).
@'
ps -o $1 | awk \
  '/pwsh/ { print $1 }'
'@ | ins - 'pid,args'

рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЗрди-рд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ - # 13204 рджреЗрдЦреЗрдВ), рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _have_ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рд╢рдмреНрджрд╢рдГ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк '...' рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ _doubling_ рдПрдореНрдмреЗрдбреЗрдб ' , рдпрджрд┐ рдореМрдЬреВрдж рд╣реЛред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдБ "StackOverflow рдСрдкрд░реЗрдЯрд░" рдХреЗ рд▓рд┐рдП рдПрдХ

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ $PROFILE рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд PSReadLine рдХреБрдВрдЬреА рдХрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк Alt-v рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдмреНрджрд╢рдГ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде ins рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд╛рда рдЪрд┐рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдХреЙрд▓ рджрд░реНрдЬ рдХрд░реЗрдВред

# Scaffolds an ins (Invoke-NativeShell) call with a verbatim here-string
# and pastes the text on the clipboard into the here-string.
Set-PSReadLineKeyHandler 'alt+v' -ScriptBlock {
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert("@'`n`n'@ | ins ")
  foreach ($i in 1..10) { [Microsoft.PowerShell.PSConsoleReadLine]::BackwardChar() }
  # Comment the following statement out if you don't want to paste from the clipboard.
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert((Get-Clipboard))
}

рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓]:

рдЖрдк _PowerShell_ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _ind рдмрд╛рд╣рд░реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде _single рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп_ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдХреЗрд╕ 1 рдП рдФрд░ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред

  • рдпрд╣ рдХрд┐рд╕реА рднреА рдЦреЛрд▓ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдЬрдирд╛рджреЗрд╢ рд╣реИ, рдФрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдордЬрдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░реЗред

    • рдЖрдкрдХреЛ PowerShell рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░реНрдХ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ _its_ parsing _as-is_ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рдХреНрд╖реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ - # 1995 рджреЗрдЦреЗрдВ ред
  • рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ _PowerShell рдХреЗ_ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ _its_ рддрд░реНрдХ-рд╡рд┐рдзрд╛ рдореЗрдЯрд╛рдЪреИрдХрд░реНрд╕ рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред

    • рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ ` рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд▓рд╛рдпрди рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рд▓рд╛рдЗрди рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛рдЪреИрдЯрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╢рдмреНрджрд╢рдГ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрджреНрдзреГрдд / рднрд╛рдЧрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдпреЗ рд╣реИрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ @ рдХреЗрд╡рд▓ рддрд░реНрдХ рдХреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред)

      • POSIX- рдЬреИрд╕реЗ рдЧреЛрд▓реЗ (рдЬреИрд╕реЗ, рдмреИрд╢): @ { } ` (рдФрд░ $ , рдЕрдЧрд░ рдЖрдк PowerShell рджреНрд╡рд╛рд░рд╛ рдЕрдк-рдлреНрд░рдВрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)
      • cmd.exe : ( ) @ { } # `
      • рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ` рдРрд╕реЗ рдЪрд╛рд░реНрдЯ рд╕реЗ рдмрдЪ рд░рд╣реЗ рд╣реИрдВред рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдЬреИрд╕реЗ, printf %s `@list.txt )ред

рдЬрдм рд╣рдо # 1995 рдХреЗ рдареАрдХ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, ie ( i nvoke (external) e xecutable) рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░ рдХреЛ рднрд░рддрд╛ рд╣реИ, рдмрд╕ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; рдЬреИрд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓ рдХреЗ рдмрдЬрд╛рдп:

# This command is currently broken, because the '{ "name": "foo" }' argument isn't properly passed.
curl.exe -u jdoe  'https://api.github.com/user/repos' -d '{ "name": "foo" }'

рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

# OK, thanks to `ie`
ie curl.exe -u jdoe  'https://api.github.com/user/repos' -d '{ "name": "foo" }'

Native рдореЙрдбреНрдпреВрд▓ echoArgs.exe рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, dbea ( Debug-ExecutableArguments ) рдХрдорд╛рдВрдб; рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ:

# Note the missing first argument, the missing " chars., and the erroneous argument boundaries.
PS> dbea '' 'a&b' '3" of snow' 'Nat "King" Cole' 'c:\temp 1\' 'a \" b'
7 argument(s) received (enclosed in <...> for delineation):

  <a&b>
  <3 of snow Nat>
  <King>
  <Cole c:\temp>
  <1\ a>
  <">
  <b>

Command line (helper executable omitted):

  a&b 3" of snow "Nat "King" Cole" "c:\temp 1\\" "a \" b"

-UseIe ( -ie ) рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк dbea рдХреЛ ie рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:

# OK, thanks to -UseIe
PS> dbea -UseIe '' 'a&b' '3" of snow' 'Nat "King" Cole' 'c:\temp 1\' 'a \" b'
6 argument(s) received (enclosed in <...> for delineation):

  <>
  <a&b>
  <3" of snow>
  <Nat "King" Cole>
  <c:\temp 1\>
  <a \" b>

Command line (helper executable omitted):

  "" a&b "3\" of snow" "Nat \"King\" Cole" "c:\temp 1\\" "a \\\" b"

рдиреЛрдЯ: рдПрдХ рдмрд╛рд░ # 1995 рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, ie рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЖрдЧреЗ рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд╣рд┐рдд рдореЗрдВ, ie рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдлрд┐рдХреНрд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, ie рдЕрдкрдиреЗ рд╡рд░реНрдХрдЕрд░реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ / & рдХреЙрд▓ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред

рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ [рдкреНрд░рддреНрдпрдХреНрд╖ рджреБрд╖реНрдЯ рд╡рд┐рдВрдбреЛрдЬ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЙрд▓]:

рджреЛ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ _Windows рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:

  • рдЖрдк рдПрдХ "рджреБрд╖реНрдЯ" рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, msiexec.exe рдФрд░ msdeploy.exe рд▓рд┐рдП prop="<value with spaces>" msdeploy.exe рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдХреЗрд╡рд▓ _value_ рднрд╛рдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ - рднрд▓реЗ рд╣реА "prop=<value with spaces>" - рд╕рдВрдкреВрд░реНрдг рдХрд╛ рдЙрджреНрдзрд░рдг рд╣реЛред рддрд░реНрдХ - _should_ рд╕рдорддреБрд▓реНрдп рд╣реЛрдирд╛ (рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╡рд╣реА рд╣реИ рдЬреЛ PowerShell - рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд░рддрд╛ рд╣реИ)ред

  • рдЖрдк _a рдмреИрдЪ рдлрд╝рд╛рдЗрд▓_ рдХреЛ _an рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ cmd.exe metacharacters_ рдЬреИрд╕реЗ & , ^ , рдпрд╛ | ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

    • .\someBatchFile.cmd 'http://example.org/a&b'
    • PowerShell - justifiably - рдкрд╛рд╕ http://example.org/a&b _unquoted_ (рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдПрдореНрдмреЗрдбреЗрдб рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдмреИрдЪ-рдлрд╝рд╛рдЗрд▓ рдЗрдирд╡реЛрдХреЗрд╢рди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ cmd.exe - рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ - рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рддрд░реНрдХ рдПрдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд╣реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╢рд╛рд╕рди рдЬреЛ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп cmd.exe рдЕрдВрджрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред

    • рдиреЛрдЯ: рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП _directly_ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрднрд╡рдд: рдХрдо рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрдиреНрд╣реЗрдВ _CLI рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдмрд╣реБрдд рдЖрдо рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Azure рдХреЗ az CLI, рдЬреЛ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ " az.cmd рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдиреЛрдЯ: ie рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ msiexec.exe рдФрд░ msdeploy.exe рд▓рд┐рдП рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП _AST_ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ; рд╣рд╛рд▓рд╛рдБрдХрд┐, _all_ "рджреБрд╖реНрдЯ" рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ cmd.exe , рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рддрд░реНрдХреЛрдВ рдХреА рдЕрдкрдиреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, _does_ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрджреНрдзрд░рдг рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдкрд░ ins рдХреЙрд▓ рдХреЛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВ:

    • ins '.\someBatchFile.cmd "http://example.org/a&b"'
    • рдпрджрд┐ рдЖрдк _expandable_ string рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ PowerShell рдорд╛рди рдХреЛ рдХрдорд╛рдВрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

      • $url = 'http://example.org/a&b'; ins ".\someBatchFile.cmd `"$url`""

  • рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд░реНрддрдорд╛рди --% рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ:

    • .\someBatchFile.cmd --% "http://example.org/a&b"'
    • рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреИрд╕реЗ --% рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, PowerShell рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЕрдЬреАрдм рд░реВрдк рд╕реЗ - рдПрдХ _aux рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░_ рдФрд░ рдЗрд╕реЗ %...% рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВ:

      • $env:url = 'http://example.org/a&b'; .\someBatchFile.cmd --% "%url%"


рдЧрд▓рддреА рд╕рдВрднрд╛рд▓рдирд╛

рд▓рдВрдмрд┐рдд https://github.com/PowerShell/PowerShell-RFC/pull/88 рдмрд╛рд╣рд░реА (рдореВрд▓) рдирд┐рд╖реНрдкрд╛рджрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐-рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдПрдХреАрдХрд░рдг рд▓рд╛рдПрдЧрд╛ред

рдЗрд╕ рдмреАрдЪ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд╕рдорд╛рдкреНрддрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдиреЙрдирдЬрд╝реЗрд░реЛ рдПрдЧреНрдЬрд┐рдЯ рдХреЛрдб рдХреЗ рдЗрд▓рд╛рдЬ рдХреЗ рд▓рд┐рдП Native рдореЙрдбреНрдпреВрд▓ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдПрдб-рд╣реЙрдХ рдСрдкреНрдЯ-рдЗрди рдХреЗ рд▓рд┐рдП :

  • ins -e / -ErrorOnFailure рд╕реНрд╡рд┐рдЪ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдпрджрд┐ $LASTEXITCODE рджреЗрд╢реА рд╢реЗрд▓ рдХреЗ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдиреЙрдирдЬрд╝рд░реЛ рд╣реИред

  • iee рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╕рдорд╛рд░реЛрд╣ рд╣реИ ie рдХрд┐ рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рддреЛ $LASTEXITCODE рдмрд╛рд╣рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдЕрд╢реВрдиреНрдп рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред
рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдЯрд┐рдкреНрдкрдгреА-рдЖрдзрд╛рд░рд┐рдд рд╕рд╣рд╛рдпрддрд╛ рдЙрдиреНрд╣реЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд░рддреА рд╣реИред

рдпрджрд┐ рд╣рдо рдХрднреА рднреА рд╡реИрдЪрд╛рд░рд┐рдХ рдХреЛрд╣рд░реЗ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдлреНрд░реЗрдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдорд╣рд╛рди! рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЬреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣ рд╕рд┐рд░реНрдл рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдФрд░ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рдерд╛ред

рдореБрдЭреЗ ins ( Invoke-NativeShell ) рдХреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рд╣реИрдВ, рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ; рдЙрджреНрджреЗрд╢реНрдп bash рдХреА рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреАрддрд╛ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ рдерд╛ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рднрд░ рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реАрдПрд▓рдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдерд╛ред

  • рдпреВрдирд┐рдХреНрд╕ рдкрд░ , рдореИрдВрдиреЗ рдмреИрд╢ рдХреА рд╕рд░реНрд╡рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП /bin/bash рдмрдЬрд╛рдп /bin/sh рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк -UseSh ( -sh рд╕рд╛рде -UseSh /bin/sh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ -sh ) ( /bin/sh рднреА /bin/bash рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ)

    • рдордВрдЧрд▓рд╛рдЪрд░рдг рд░реВрдкреЛрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд рдЕрдиреБрднрд╡ рдХреЗ рд╣рд┐рдд рдореЗрдВ, рдореИрдВрдиреЗ $0 , рдордВрдЧрд▓рд╛рдЪрд░рдг рдирд╛рдо рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЫрд┐рдкрд╛рдИ рд╣реИ; рд╡рд╣ рд╣реИ, рдХреЛрдИ рднреА рдкрд╛рд╕-рдереНрд░реВ рддрд░реНрдХ $1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдкрд╛рдЗрдк рд▓рд╛рдЗрди рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
# Script as argument
PSonUnix> ins 'echo $# arguments; echo "[$1] [$2]"' one two
2 arguments
[one] [two]

# Script via pipeline; note the "-" to signal that the script is piped.
PSonUnix> 'echo $# arguments; echo "[$1] [$2]"' | ins - one two
2 arguments
[one] [two]

# As an aside: script as argument, with pipeline input *as data*:
PSonUnix> 'one', 'two' | ins 'cat -n'
     1  one
     2  two
  • рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдореБрдЭреЗ рддрдХрдиреАрдХреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА _batch file_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдЪ-рдлрд╛рдЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдВрддрддрдГ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ ( %%i рдмрдЬрд╛рдп %i for рд▓реВрдк рдЪрд░, % %% рд░реВрдк рдореЗрдВ рдмрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

    • рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдкрд╛рд╕-рдереНрд░реВ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ:
# Script as argument
PSonWin> ins 'echo [%1] [%2]' one two
[one] [two]

# Script via pipeline; note the "-" to signal that the script is piped.
PSonWin> 'echo [%1] [%2]' | ins - one two
[one] [two]
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lzybkr picture lzybkr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

HumanEquivalentUnit picture HumanEquivalentUnit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ajensenwaud picture ajensenwaud  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pcgeek86 picture pcgeek86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manofspirit picture manofspirit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ