If $\omega$ is harmonic, then it is $d$-closed. For the other direction, suppose $\omega$ is $d$-closed and primitive, i.e. $d\omega = 0$ and $\Lambda\omega = 0$. Then, by a Kähler identity, $$i\bar{\partial}^*\omega = [\Lambda, \partial] = \Lambda(\partial\omega) - \partial(\Lambda\omega) = \Lambda(\partial\omega)$$ and similarly $-i\partial^*\omega = \Lambda(\bar{\partial}\omega)$. So $$d^*\omega = \partial^*\omega + \bar{\partial}^*\omega = \Lambda(i\bar{\partial}\omega - i\partial\omega) = \Lambda(d^c\omega)$$ where $d^c = i(\bar{\partial}-\partial)$. So $\omega$ is harmonic if and only if if $d^c\omega$ is primitive. If $\omega$ is a $(p, q)$-form, then $d\omega = 0$ is equivalent to $\partial\omega = 0$ and $\bar{\partial}\omega = 0$, in which case it follows that $\partial^*\omega = 0$ and $\bar{\partial}^*\omega = 0$. Therefore $d^*\omega = 0$ and hence $\omega$ is harmonic. I'm not sure if the statement still holds if $\omega$ is an arbitrary form. The issue is that $d\omega = 0$ does not necessarily imply $\partial\omega = 0$ and $\bar{\partial}\omega = 0$ in this case.