powershell - dotnet efscaffold 无法识别的选项 '-t firstTable -t secondTable' - 传递存储在字符串中的参数

标签 powershell arguments parameter-passing command-line-arguments programmatically-created

我有一个从PowerShell运行的.ps1文件,代码如下:

$strTables = ""
$tables | ForEach-Object{            
    $strTables += "-t $_ "  
}
# $strTables = -t fisrtTable -t secondTable
dotnet ef dbcontext scaffold $strConn Npgsql.EntityFrameworkCore.PostgreSQL --context MyModel $strTables -v -f

如果我将变量 $strTable 放入命令中,它无法识别 -t 参数(但变量 $strConn 确实有效) )

Unrecognized option '-t fisrtTable -t secondTable'

如果我编写没有变量的表,它就可以工作。

dotnet ef dbcontext scaffold $strConn Npgsql.EntityFrameworkCore.PostgreSQL --context MyModel -t firstTable -t secondTable -v -f

我有太多表,无法手动执行此操作。您知道如何将变量 $strTablesdotnet 命令连接起来吗?

提前致谢

最佳答案

如果您构造一个字符串,例如-t foo,并通过变量将其传递给外部程序,它将作为、双引号参数(即,donet 将在其命令行上逐字地看到 "-t foo") - 因此不会被识别为参数名称-值组合。

  • 您必须分别传递 -tfoo ,作为 的元素数组改为。

  • 当您使用数组作为外部程序的参数时,PowerShell 将数组元素作为单独的、以空格分隔的参数传递:

# Create an array such as '-t', 'foo', '-t', 'bar', ...
$tableArgs = 
  $tables | ForEach-Object{            
    '-t', "$_"  
  }

# Note the use of $tableArgs as-is, which causes PowerShell to pass
# e.g. ... -t foo -t bar ... behind the scenes.
dotnet ef dbcontext scaffold $strConn Npgsql.EntityFrameworkCore.PostgreSQL --context MyModel $tableArgs -v -f

提供一个更简单的示例:foo -s -o "bar baz"file1 的等效项是:

$a = '-s', '-o', 'bar baz', 'file1'; foo $a

正如第一个代码片段所暗示的那样,您可以自由地将显式指定的参数与通过数组提供的参数混合使用。


顺便说一句:

  • 如果包含参数的数组存储在变量中,您也可以使用 splatting ,即您可以传递 @tableArgs (@ 而不是 $)。但是,考虑到对于外部程序和数组,这与直接传递数组(变量)相同,因此这样做没有任何优势。

  • 但是,为了将以编程方式构造的参数传递给 PowerShell 命令,展开所必需的,其中更常见的是基于哈希表 em> 其键标识目标参数,从而可以传递命名参数。

关于powershell - dotnet efscaffold 无法识别的选项 '-t firstTable -t secondTable' - 传递存储在字符串中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73208362/

相关文章:

php - 捕获未知的命名参数错误

node.js - 在路由中传递参数到 Express 中间件

windows - Robocopy:复制文件保留文件夹结构但添加子文件夹

powershell - 如何将输出从命令重定向到变量?

string - Powershell 连接字符串和内联变量?

ios - 如何使用带延迟的参数调用void方法?

sql - Powershell 脚本中的 ExecuteReader()

python - 从Python中带有**kwargs的函数获取带有*args的函数

javascript - react .js。创建带有参数的方法(props 将是参数)还是在函数体中引用 props 更好?

performance - 当函数参数是接口(interface)时复制什么