O Windows 10 (v1607 e anterior) ainda não fornece esse recurso por padrão.
Felizmente, você pode ativá-lo com uma chave de registro (fornecida abaixo)
A chave, claro, permite associar o script .sh ao bash.exe, assim também permite simplesmente clicar duas vezes no script
link (UPDATE: novas opções de ícones para o Ubuntu, OpenSUSE e instalação legada)
A chave também permite a opção de executar o script no modo usuário e elevado (o primeiro clicando duas vezes, o último é uma opção de clique direito), enquanto uma chave extra (opcional) permite clicar com o botão direito > editar com nano
Lembre-se que você primeiro tem que instalar Windows Subsystem for Linux
e configurá-lo como programa padrão para abrir arquivos .sh (o caminho do programa é C: /Windows/System32/bash.exe)
A chave de registro principal executa o seguinte script
#This makes bash.exe silently execute the command below (whole code)
"%SYSTEMROOT%\System32\bash.exe" -c
#Gets all file paths without expansion/substitution
read -r -d '' path_param <<'EOF'
%*
EOF
read -r -d '' path_exec <<'EOF'
%L
EOF
#Parses all dragged files' paths from Windows paths to unix paths
path_param=$(echo $path_param | tr -d '"' | sed 's/[[:space:]]\([A-Z]:\)/\n/g' | sed 's/[A-Z]:/\/mnt\/\L&/g' | tr '\' '\/'\');
mapfile -t path_param <<< "$path_param";
path_param=("${path_param[@]//:}");
#Same, but with the .sh script path
path_exec=$(echo $path_exec | sed 's/[[:space:]]\([A-Z]:\)/\n/g' | sed 's/[A-Z]:/\/mnt\/\L&/g' | tr '\' '\/'\');
path_exec="${path_exec//:}";
#Sets working directory to the folder where the script is located
cd "${path_exec%\/*}";
#Executes script with or without parameters
if [[ ${path_param[@]} == "" ]];
then "$path_exec";
else "$path_exec" "${path_param[@]/#${path_exec%\/*}\/}";
fi;
#Leaves WSL console open after the .sh script finishes executing
cd ~; bash;