Tôi có một kịch bản PowerShell:Powershell: args/params không được phổ biến
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)") }
Các Write-Host part
là để gỡ lỗi.
tôi chạy nó như .\csvtosql.ps1 mycsv.csv dbo.MyTable
(từ vỏ PowerShell), và nhận được
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
tôi nhận được chính xác những lỗi tương tự với bất kỳ thông số mà tôi vượt qua, cũng là lỗi tương tự nếu tôi cố gắng sử dụng tên thông số.
Điều gì có thể khiến thông số không được chuyển vào?
CẬP NHẬT:. PowerShell ISE hỏi tôi cho các thông số sử dụng nhắc nhở GUI, sau đó mang lại cho tôi những lỗi tương tự về họ không được thông qua tại
Ok, '$ args' chỉ để gỡ lỗi vì lợi ích, nhưng bạn nói đúng, chúng không hoạt động, như những câu trả lời của người khác. –
Bây giờ đầu vào '$' là đặc biệt là lý do cho vấn đề của tôi. Cảm ơn rất nhiều! –