The majority of Bernhardt's career was spent in the minor leagues. He began his professional career in 1971 with the Class-A Key West Sun Caps. In the minors, he would go on to play for the Class-A Fort Lauderdale Yankees (1972–73), the Double-A West Haven Yankees (1974–75), the Triple-A Syracuse Chiefs (1975–76), the Triple-A San Jose Missions (1978), the Triple-A Spokane Indians (1979), the Triple-A Iowa Oaks (1979), the Triple-A Tabasco Plataneros, the Triple-A Campeche Piratas/Alacranes (1981–83), and the Triple-A Aguascalientes Rieleros. He served as a player-manager from 1981 to 1982.
On August 1, 1970, Bernhardt signed with the New York Yankees as an amateur free agent. Bernhardt made his professional baseball debut in 1971 in the Yankees minor league organization. With the Class-A Key West Sun Caps that year, he batted .249 with 25 runs scored, 82 hits, 15 doubles, two triples, one home run, and 31 runs batted in (RBIs) in 97 games played. Defensively, Bernhardt played 54 games at third base, 28 games at first base, five games in the outfield, and three games at shortstop. During the 1972 season, Bernhardt was assigned to play with the Class-A Fort Lauderdale Yankees of the Florida State League. In 121 games played that season, he batted .288 with 128 hits, 18 doubles, two triples, and two home runs. In the field, Bernhardt played first base, third base, and in the outfield.
Bernhardt continued playing with the Class-A Fort Lauderdale Yankees in 1973. In only 37 games played that year, he batted .337 with 34 hits, four doubles, and one home run. After the season, the New York Yankees purchased his contract, adding him to their 40-man roster. Bernhardt attended spring training with New York in 1974, but was assigned to the Double-A West Haven Yankees before the start of the regular season. With West Have that year, Bernhardt batted .201 with 20 runs scored, 37 hits, six doubles, one triple, three home runs, and 19 RBIs in 60 games played.
Bernhardt split the 1975 season between the Double-A West Haven Yankees, and the Triple-A Syracuse Chiefs. At the Double-A level, he batted .319 with 51 hits, 10 doubles, one triple, and one home run in 41 games played. In the field, he played third base, and first base. During his time with West Haven that season, he led the Eastern League in batting average. After his promotion to the Chiefs, Bernhardt batted .303 with 22 runs scored, 90 hits, 19 doubles, one triple, four home runs, and 44 RBIs in 79 games played. Defensively, he played 33 games at third base, 33 games in the outfield, and 16 games at first base. Combined between the two clubs, Bernhardt's batting average was .309.
In 1976, Bernhardt began the season with the Triple-A Syracuse Chiefs. However, in July, the New York Yankees purchased his contract from the minor leagues when Elliott Maddox was placed on the disabled list. Bernhardt made his debut in Major League Baseball on July 10, against the Chicago White Sox, where in one at-bat, he went hitless. His first hit came on July 17, in a game against the Texas Rangers. In August, he was sent back to the minor leagues. In September, the Yankees attempted to trade Bernhardt in exchange for Rico Carty, but nothing ever came of it. In the majors, Bernhardt batted .190 with four hits in 21 at-bats. In the minor leagues, he batted .303 with 41 runs scored, 115 hits, 24 doubles, eight home runs, and 57 RBIs in 101 games played.
During the 1976 Major League Baseball expansion draft, Bernhardt was selected by the Seattle Mariners from the New York Yankees. Bernhardt made the inaugural Mariners team out of spring training in 1977. During his first game of the season, Bernhardt got five hits, including a home run, in five at-bats. Not only was it Bernhardt's first career home run, but it was also the first home run in Mariners history. On the season, Bernhardt batted .243 with 32 runs scored, 74 hits, nine doubles, two triples, seven home runs, and 30 RBIs in 89 games played. Defensively, he played 21 games at third base, and eight games at first base. The majority of his playing time, 54 games, was spent as a designated hitter in the Mariners lineup.
Bernhardt split the 1978 season between the major leagues and the minor leagues. With the San Jose Missions, who were the Seattle Mariners Triple-A affiliate at the time, he batted .274 with 13 runs scored, 26 hits, three doubles, two home runs, and 16 RBIs in 25 games played. Bernhardt made his season debut in the majors on May 12, in a game against the Toronto Blue Jays. With the Mariners that year, he batted .230 with 13 runs scored, 38 hits, nine doubles, two home runs, and 12 RBIs in 54 games played. Bernhardt would only play one more game in the major leagues, coming on April 8, 1979 in a game against the California Angels, he got one hit in one at-bat. After that, the Mariners sent Bernhardt to the minor leagues where he played with the Triple-A Spokane Indians. In 98 games with Spokane, he batted .271 with 43 runs scored, 106 hits, 18 doubles, two triples, three home runs, and 49 RBIs.
In early-July 1979, the Seattle Mariners traded Bernhardt to the Chicago White Sox in exchange for Rich Hinton. Bernhardt spent the rest of that season with the Iowa Oaks, who were the Triple-A affiliates of the White Sox at the time. In 25 games with the Oaks, he batted .305 with five runs scored, 18 hits, two doubles, one triple, and six RBIs. That season would prove to be Bernhardt's last in the United States, however, from 1980 to 1983, he played in the Mexican League. In 1980, he joined the Triple-A Tabasco Plataneros. From 1981 to 1982, Bernhardt was the player-manager for the Triple-A Campeche Piratas/Alacranes Mexican League team, who represented Campeche, Mexico. His final professional baseball season was in 1983 when he again played with the Campeche Triple-A team, and the Triple-A Aguascalientes Rieleros, who were also members of the Mexican League.