Ho uno script PowerShell:PowerShell: Args/params non essere popolato
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)") }
Il Write-Host part
è per il debug.
corro come .\csvtosql.ps1 mycsv.csv dbo.MyTable
(da shell powershell), e ottenere
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
ottengo esattamente lo stesso errore con i parametri che mi passano, anche lo stesso errore se si tenta di utilizzare parametri denominati.
Cosa può causare il mancato passaggio dei parametri?
UPDATE:. PowerShell ISE mi chiede per questi parametri utilizzando i prompt GUI, poi mi dà lo stesso errore su di loro non essere passata in
Ok, '$ args' dove solo per il debug del sake, ma hai ragione, non funzionano comunque, come per le risposte degli altri. –
Ora il '$ input' è speciale è la ragione del mio problema. Molte grazie! –