Je suis nouveau sur PowerShell. S'il vous plaît aidez-moi sur la façon d'obtenir ce qui suit: afficher des données sur SQL Server de chaque ligne à partir d'un fichier xls en utilisant PowerShell. Ci-dessous le code que j'ai créé jusqu'à maintenant mais qui s'avère qu'une seule ligne de données est affichée dans la base de données. Comment est-ce que je boucle la sortie de chaque rangée?Afficher les données sur SQL Server de chaque ligne à partir d'un fichier xls à l'aide de powershell
$filepath = "C:\Source\AandPrates.xls"
#object to open excel workbook
$excel= New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open($filepath)
$worksheet = $workbook.Worksheets.Item(1)
$startRow = 4
#create system.datatable
#read xls file line by line and display on powershell
$dt = New-Object "System.Data.DataTable"
[void]$dt.Columns.Add("Currency Name",
[System.Type]::GetType("System.String"))
[void]$dt.Columns.Add("ISO Code",
[System.Type]::GetType("System.String"))
[void]$dt.Columns.Add("Accounting Rates",
[System.Type]::GetType("System.String"))
[void]$dt.Columns.Add("Base Currency",
[System.Type]::GetType("System.String"))
Do {
$ColValues1 = $worksheet.Cells.Item($startRow,1).Value()
$ColValues2 = $worksheet.Cells.Item($startRow,2).Value()
$ColValues3 = $worksheet.Cells.Item($startRow,3).Value()
$ColValues4 = $worksheet.Cells.Item($startRow,4).Value()
$startRow++
$dt.Rows.Add($ColValues1,$ColValues2,$ColValues3,$ColValues4)
}
while ($worksheet.Cells.Item($startRow,1).Value() -ne $null)
$name = $ColValues1
$code = $ColValues2
$rates = $ColValues3
$currency = $ColValues4
$Excel.Quit()
#Connect to the SQL database
$Conn = New-Object System.Data.SqlClient.SqlConnection
$Conn.ConnectionString = "Server=5CG61730W6\SQLEXPRESS;Database=shamsuli;trusted_connection=true;"
$Conn.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Conn
#insert the output from powershell into sql server
$output | foreach {
$Command.CommandText = "INSERT INTO dbo.MyTable (Name,Code,Rates,Currency) VALUES (@Name, @Code, @Rates, @Currency)"
$Command.Parameters.Add((New-Object Data.SqlClient.SqlParameter("@Name", $name)));
$Command.Parameters.Add((New-Object Data.SqlClient.SqlParameter("@Code", $code)));
$Command.Parameters.Add((New-Object Data.SqlClient.SqlParameter("@Rates", $rates)));
$Command.Parameters.Add((New-Object Data.SqlClient.SqlParameter("@Currency", $currency)));
$Command.ExecuteNonQuery() | out-null
}
$Conn.Close()