Updating SQL table from Excel sheet (using powershell)
Bulk load processes do just that - load data. They are not intended for updating existing data, or even for adding rows that don't already exist. As you surmised, the best method for those things is generally to load the data to a staging table, run a process that moves staging data to the main table (whether that's updating or replacing existing rows adding new rows, or some combination of the above), then clearing the staging table.

I'd set up a stored procedure in SQL to handle the data in the staging table, and run that after loading the staging table. You could use your existing script, but would need to add the code to run the stored procedure (and, of course, would need to create the stored procedure on your SQL Server).