我有一個PowerShell腳本:PowerShell的:參數數量/ PARAMS不填充
param (
[Parameter(Mandatory=$true)][string]$input,
[Parameter(Mandatory=$true)][string]$table
)
Write-Host "Args:" $Args.Length
Get-Content $input |
% { [Regex]::Replace($_, ",(?!NULL)([^,]*[^\d,]+[^,]*)", ",'`$1'") } |
% { [Regex]::Replace($_, ".+", "INSERT INTO $table VALUES (`$1)") }
的Write-Host part
用於調試。
我運行它.\csvtosql.ps1 mycsv.csv dbo.MyTable
(從PowerShell的外殼),並獲得
Args: 0
Get-Content : Cannot bind argument to parameter 'Path' because it is an empty s
tring.
At C:\temp\csvtosql.ps1:7 char:12
+ Get-Content <<<< $input |
+ CategoryInfo : InvalidData: (:) [Get-Content], ParameterBinding
ValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAl
lowed,Microsoft.PowerShell.Commands.GetContentCommand
我得到完全相同的錯誤與我傳遞任何參數,也同樣的錯誤,如果我嘗試使用命名參數。
什麼會導致參數不被傳入?
UPDATE:PowerShell的ISE問我這些參數使用GUI提示,然後給了我同樣的錯誤對他們沒有被傳遞
好的,'$ args'只是爲了調試,但是你是對的,根據其他人的回覆他們根本無法工作。 –
現在'$ input'是特殊的是我的問題的原因。非常感謝! –