winure/scripts/elevate.sh

42 lines
732 B
Bash
Executable file

#!/usr/bin/bash
# error if 'pwsh' not in path
if [ ! which pwsh > /dev/null 2>&1 ]; then
echo "no 'pwsh' in \$PATH"
exit 1
fi
# set mode (linux/dos)
if [[ "$1" == "-l" ]]; then
mode='linux'
shift
elif [[ "$1" == "-w" ]]; then
mode='dos'
shift
# error if no target for DOS
if [ "$#" -eq 0 ]; then
echo "elevate: DOS mode requires a target"
exit 3
fi
fi
# consume target based on mode
if [[ "$mode" == "linux" ]]; then
target='wsl.exe'
elif [[ "$mode" == "dos" ]]; then
target="$1"
shift
else
echo "elevate: no mode set; use '-l' or '-w'"
exit 2
fi
# consume remaining arguments
arglist=''
if [ "$#" -ne 0 ]; then
arglist="-ArgumentList '$@'"
fi
# execute
pwsh -C "Start-Process -Verb runas $target $arglist"