I have found a work-around where I can pass commands at the end of the plink command. Pexpect does not work with Windows and I had endless dramas with the windows version. As you can tell from the code below, the final program is to open VNC viewer, automatically establish connection with my AWS EC2 instance and make sure the environment is still suitable for my needs (as the instance sometimes requires tightvnc to be reinitialised).
import subprocess
subprocess.call('C:/Users/joshs/OneDrive/Documents/VNCViewer')
subprocess.call("plink -i /Users/joshs/OneDrive/Documents/Downloads/newkey.ppk kali@xx.xxx.xxx.xx sudo apt install xfce4 xfce4-goodies -y tightvncserver; sudo apt-get install gnome-core kali-defaults kali-root-login desktop-base -y ; tightvncserver -geometry 1920x1080; sudo gunzip /usr/share/wordlists/rockyou.txt.gz")
subprocess.call("plink -L 5901:localhost:5901 -N -i /Users/joshs/OneDrive/Documents/Downloads/newkey.ppk kali@xx.xxx.xxx.xx")
subprocess.call(['C:\Program Files\RealVNC\VNC Viewer'])