gpt4 book ai didi

powershell - 为什么我无法在Powershell中执行带有来自字符串的参数的命令行?

转载 作者:行者123 更新时间:2023-12-04 13:15:23 24 4
gpt4 key购买 nike

在Windows Powershell中,我试图将移动命令存储在字符串中,然后执行它。有人可以告诉我为什么这行不通吗?

PS C:\Temp\> dir
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Temp

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/14/2009 8:05 PM 2596 sa.csproj
-a--- 8/15/2009 10:42 AM 0 test.ps1


PS C:\Temp> $str = "mv sa.csproj sb.csproj"
PS C:\Temp> &$str
The term 'mv sa.csproj sb.csproj' is not recognized as a cmdlet, function, operable program, or script file. Verify the
term and try again.
At line:1 char:2
+ &$ <<<< str
PS C:\Temp>

当存储带有参数的任何命令时,都会出现此错误。如何克服此限制?

最佳答案

从帮助中(about_Operators):

&  Call operator  Description: Runs a command, script, or script block. Because the call  operator does not parse, it cannot interpret command parameters.

You can use a script block instead of a string:

$s = { mv sa.csproj sb.csproj }
& $s

或者您可以使用 Invoke-Expression:
Invoke-Expression $str

或者
iex $str

&相比, Invoke-Expression会解析字符串内容,因此您可以在其中放置任何内容,而不仅仅是一个命令。

关于powershell - 为什么我无法在Powershell中执行带有来自字符串的参数的命令行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com