diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_dryrun_output.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_dryrun_output.ksh
index f3c208e88f4c..3f9ce321059c 100755
--- a/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_dryrun_output.ksh
+++ b/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_dryrun_output.ksh
@@ -155,11 +155,17 @@ for (( i=0; i < ${#tests[@]}; i+=1 )); do
 
 	log_must eval zpool create "$TESTPOOL" $tree
 	log_must poolexists "$TESTPOOL"
-	typeset out="$(log_must eval "zpool add -n '$TESTPOOL' $add" | \
-	    sed /^SUCCESS/d)"
-
+	typeset out
+	out="$(eval zpool add -n '$TESTPOOL' $add)"
+	if [[ $? -ne 0 ]]; then
+		log_fail eval "zpool add -n '$TESTPOOL' $add"
+	fi
 	if [[ "$out" != "$want" ]]; then
-		log_fail "Got:\n" "$out" "\nbut expected:\n" "$want"
+		log_note "Got:"
+		log_note "$out"
+		log_note "but expected:"
+		log_note "$want"
+		log_fail "Dry run does not display config correctly"
 	fi
 	log_must destroy_pool "$TESTPOOL"
 done
@@ -170,7 +176,11 @@ log_must eval "zpool create '$TESTPOOL' '${dev[0]}' log '${dev[1]}' \
 
 # Create a hole vdev.
 log_must eval "zpool remove '$TESTPOOL' '${dev[1]}'"
-log_mustnot eval "zpool add -n '$TESTPOOL' '${dev[1]}' | \
-    grep -qE '[[:space:]]+hole'"
+typeset out
+out="$(eval zpool add -n '$TESTPOOL' '${dev[1]}')"
+if [[ $? -ne 0 ]]; then
+    log_fail eval "zpool add -n '$TESTPOOL' '${dev[1]}'"
+fi
+log_mustnot grep -qE '[[:space:]]+hole' <<<"$out"
 
 log_pass "'zpool add -n <pool> <vdev> ...' displays config correctly."
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_dryrun_output.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_dryrun_output.ksh
index 2bd836bcbc4a..5d654ec3a6d6 100755
--- a/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_dryrun_output.ksh
+++ b/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_dryrun_output.ksh
@@ -127,12 +127,17 @@ done
 for (( i=0; i < ${#tests[@]}; i+=1 )); do
 	tree="${tests[$i].tree}"
 	want="${tests[$i].want}"
-
-	typeset out="$(log_must eval "zpool create -n '$TESTPOOL' $tree" | \
-	    sed /^SUCCESS/d)"
-
+	typeset out
+	out="$(eval zpool create -n '$TESTPOOL' $tree)"
+	if [[ $? -ne 0 ]]; then
+		log_fail eval "zpool create -n '$TESTPOOL' $tree"
+	fi
 	if [[ "$out" != "$want" ]]; then
-		log_fail "Got:\n" "$out" "\nbut expected:\n" "$want"
+		log_note "Got:"
+		log_note "$out"
+		log_note "but expected:"
+		log_note "$want"
+		log_fail "Dry run does not display config correctly"
 	fi
 done
 
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_dryrun_output.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_dryrun_output.ksh
index 05addd2823a8..e66456a71893 100755
--- a/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_dryrun_output.ksh
+++ b/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_dryrun_output.ksh
@@ -140,11 +140,17 @@ for (( i=0; i < ${#tests[@]}; i+=1 )); do
 
 	log_must eval zpool create "$TESTPOOL" $tree
 	log_must poolexists "$TESTPOOL"
-	typeset out="$(log_must eval "zpool split -n \
-	    '$TESTPOOL' '$NEWPOOL' $devs" | sed /^SUCCESS/d)"
-
+	typeset out
+	out="$(eval zpool split -n '$TESTPOOL' '$NEWPOOL' $devs)"
+	if [[ $? -ne 0 ]]; then
+		log_fail eval "zpool split -n '$TESTPOOL' '$NEWPOOL' $devs"
+	fi
 	if [[ "$out" != "$want" ]]; then
-		log_fail "Got:\n" "$out" "\nbut expected:\n" "$want"
+		log_note "Got:"
+		log_note "$out"
+		log_note "but expected:"
+		log_note "$want"
+		log_fail "Dry run does not display config correctly"
 	fi
 	log_must destroy_pool "$TESTPOOL"
 done