42 lines
732 B
Bash
Executable file
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"
|
|
|