The Senate approved a war powers resolution blocking President Trump from engaging in hostilities with Iran without congressional approval, a measure which has bipartisan support but not enough to overturn an all but certain veto from the White House.

The vote passed 55 to 45, with eight Republicans joining all Democrats to vote in favor of the resolution.

The resolution introduced by Democratic Senator Tim Kaine directs the removal of U.S. Armed Forces from hostilities against Iran within 30 days unless their engagement has been approved by Congress. It is expected to be approved by the House, which passed a similar resolution last month, but will likely be vetoed by the president.

Eight Republicans joined Democrats in approving a procedural vote to bring the resolution to a full vote on the Senate floor: Lamar Alexander, Bill Cassidy, Susan Collins, Mike Lee, Jerry Moran, Lisa Murkowski, Rand Paul, and Todd Young. These Republicans also supported final passage of the resolution on Thursday.

Mr. Trump expressed his disapproval of the measure in a tweet on Wednesday.

“It is very important for our Country’s SECURITY that the United States Senate not vote for the Iran War Powers Resolution. We are doing very well with Iran and this is not the time to show weakness. Americans overwhelmingly support our attack on terrorist Soleimani,” Mr. Trump said, referring to the recent strike which killed Iranian military leader Qassem Soleimani. “If my hands were tied, Iran would have a field day. Sends a very bad signal. The Democrats are only doing this as an attempt to embarrass the Republican Party. Don’t let it happen!”

Democrats and Republicans expressed concerns after Mr. Trump ordered the strike on Soleimani without congressional approval, leading Iran to retaliate by targeting American bases in Iraq, where dozens of American soldiers were injured. Iran also mistakenly hit a Ukrainian passenger plane, leading to the deaths of nearly 200 people.

In January, the House approved a measure, relating to the War Powers Resolution of 1983, to restrict his authority to strike Iran without congressional approval. The resolution passed by a vote of 224 to 194 and now goes to the Senate. Eight Democrats joined Republicans in opposing the resolution, while three Republicans voted in favor.

The measure passed in the House is what’s known as a “concurrent resolution,” meaning it requires only the approval of both chambers of Congress and does not go to the president for his signature. Kaine’s measure is a “joint resolution,” meaning that it requires Mr. Trump’s signature, but also that it would be binding.