Without revealing the substance, Powell issued a statement through the team saying he mistakenly used a product that led to the positive test. He apologized for what happened and said he accepts the league's decision.
Powell is entering his fourth NFL season and third with Buffalo. He had 14 catches for 142 yards in nine games in 2016 before sustaining a season-ending injury to his left ankle in late November.
Powell is not eligible to return until Oct. 2.