Januschan icon

RunPowerShellScript.sh

Januschan | PRO | 04/30/21 07:35:42 PM UTC (Edited) | 0 ⭐ | 494 👁️ | Never ⏰ | []
Bash |

3.03 KB

|

None

|

0 👍

/

0 👎

#!/usr/bin/env bash
 
# call this script to execute a single powershell script
# it will download powershell core if necessary
 
#  Usage
#         sudo bash ./RunPowerShellScript.sh ./MyScriptToRun.ps1
 
# NOTE: like any shell script, this requires 'execute' permission which can be set as follows
#         sudo chmod +x RunPowerShellScript.sh
 
function RunPowerShellScript()
{
    local platform="$(uname -s)"
    case "${platform}" in
        Linux*)     local archiveExtension=.tar.gz  #Linux
                    local unarchive='sudo tar zxf ${tempDownload} -C ${targetdir}'
                    local package=linux-x64${archiveExtension} ;;
        Darwin*)    local archiveExtension=.tar.gz #Mac
                    local unarchive='sudo tar zxf ${tempDownload} -C ${targetdir}'
                    local package=osx-x64${archiveExtension} ;;
        CYGWIN*)    local archiveExtension=.zip #Cygwin
                    local unarchive='sudo powershell.exe -nologo -noprofile -command "& { Add-Type -A \''System.IO.Compression.FileSystem\''; [IO.Compression.ZipFile]::ExtractToDirectory(\''${tempDownload}\'', \''${targetdir}\''); }"'
                    local package=win-x64${archiveExtension} ;;
        MINGW*)     local archiveExtension=.zip #Mingw
                    local unarchive='sudo powershell.exe -nologo -noprofile -command "& { Add-Type -A \''System.IO.Compression.FileSystem\''; [IO.Compression.ZipFile]::ExtractToDirectory(\''${tempDownload}\'', \''${targetdir}\''); }"'
                    local package=win-x64${archiveExtension} ;;
        *)          machine="UNKNOWN:${platform}" ;;
    esac
 
    echo
    echo Running on $platform
 
    local version=7.1.2
    local url=https://github.com/PowerShell/PowerShell/releases/download/v${version}/powershell-${version}-${package}
    local tempDownload=/tmp/powershell.${archiveExtension}
    local targetdir=/usr/local/tmp/microsoft/powershell/${version}
 
    echo
 
    if test -f $targetdir/pwsh; then
        echo "$targetdir/pwsh already exists."
    else
        echo "Downloading $tempDownload..."
        echo
        # Download the powershell '.tar.gz' archive
        curl -L -o $tempDownload $url
 
        # Create the target folder where powershell will be placed
        sudo mkdir -p $targetdir
 
        # Expand powershell to the target folder
        eval $unarchive
 
        # Set execute permissions
        sudo chmod +x $targetdir/pwsh
    fi
 
    # Create the symbolic link that points to pwsh
    #sudo ln -s $targetdir/pwsh /usr/local/bin/pwsh
    
    # Remove the symbolic link
    #unlink /usr/local/bin/pwsh
    
    # OS-X pre-req
    # xcode-select --install  # this could be part of the Darwin case in switch above
 
    echo $targetdir/pwsh $1
    echo
    $targetdir/pwsh $1
    echo
 
    # Cleanup (defeats the existence check)
    #sudo rm -f -r $targetdir
}
 
if [ $# -eq 0 ]
  then
    echo
    echo "Missing required parameter: path of PowerShell script to run"
    echo
    echo "Usage: sudo bash ./RunPowerShellScript.sh ./MyScriptToRun.ps1"
    echo
  else
    RunPowerShellScript $1
fi
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎