給定一個腳本foo.ps1:param($ x,$ y)return $ x/$ y在PowerShell中,是否可以強制命名參數?
是否可以在調用它時強制執行顯式參數命名?
./foo.ps1 5 10會產生一個錯誤 ./foo.ps1 -x 5 -y 10如果您在使用PowerShell的V2提前功能位置屬性的所有參數的默認指定的位置將確定
給定一個腳本foo.ps1:param($ x,$ y)return $ x/$ y在PowerShell中,是否可以強制命名參數?
是否可以在調用它時強制執行顯式參數命名?
./foo.ps1 5 10會產生一個錯誤 ./foo.ps1 -x 5 -y 10如果您在使用PowerShell的V2提前功能位置屬性的所有參數的默認指定的位置將確定
此代碼的工作,但它使用的東西不記錄(我找不到任何有關負位置的任何東西):
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
除非爲其他參數指定了位置屬性(來源:PowerShell In Action 2nd pg 296)。所以,你可以這樣做:
function Test-Args
{
param(
[parameter(Position=0)] $dummy,
$x,
$y
)
$x/$y
}
我我會爲了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}
但是,您可以通過腳本參數將參數傳遞給被調用腳本中的高級函數,並讓高級函數知道傳遞給腳本時它們原來是位置還是名稱? – mjolinor 2011-01-27 18:18:21
腳本也可以實現位置屬性。如果我將功能到一個腳本稱爲測試 - arg1.ps1(工作原理是相同的:PARAM( [參數(位置= 0)] $虛設, $ X, $ Y ) $ X/$ Y – 2011-01-27 20:22:23