给定脚本foo.ps1:param($ x,$ y)返回$ x / $ y
调用它时是否可以强制显式参数命名?
./ foo.ps1 5 10会产生错误 ./foo.ps1 -x 5 -y 10就可以了
答案 0 :(得分:4)
如果使用PowerShell V2高级功能位置属性指定位置,除非为其他参数指定了position属性,否则所有参数都默认为非位置(来源:PowerShell In Action 2nd pg 296)。所以你可以这样做:
function Test-Args
{
param(
[parameter(Position=0)] $dummy,
$x,
$y
)
$x/$y
}
答案 1 :(得分:4)
此代码有效,但它使用了未记录的内容(我找不到任何有关负面位置的内容):
function Test
{
param(
[Parameter(Position=-1)]
$x
,
[Parameter(Position=-1)]
$y
)
$x/$y
}
Test -x 1 -y 2
Test -y 2 -x 1
Test 1 2
输出:
0.5
0.5
Test : Cannot bind positional parameters because no names were given.
At C:\TEMP\_110127_170853\q1.ps1:15 char:5
答案 2 :(得分:1)
您可以在CmdletBinding参数中指定它。 即使PositionalBinding设置为$ false,您仍然可以为参数分配位置。 PowerShell不会再自动为您的参数分配位置,因此,除非另外指定,否则所有参数都将被命名。
nano ~/.config/pgadmin/pgadmin4.conf
# or with a right click on the system tray icon
# add /usr/local/lib/python3.6/dist-packages to the PythonPath.
答案 3 :(得分:0)
我打算用foo.ps1。除非有人设法明确使用-dummy1或-dummy2来指定参数,否则它应该可以正常工作。
param($dummy1,$x,$y,$dummy2)
if (!$x -or !$y -or $dummy1 -or $dummy2){
"Error: specify -x and -y explicitly"
}
else {$x/$y}