mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
install-powershell.sh
updating for pull request comments OSX Install script updated to use repositories Using TR, use curl rather than wget since we ensured it is on the system Update comments in install-powershell.sh install-powershell.sh
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Companion code for the blog https://cloudywindows.com
|
||||
|
||||
#call this code direction from the web with:
|
||||
#bash <(wget -O - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
#wget -O - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh | bash -s <ARGUMENTS>
|
||||
#bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
|
||||
|
||||
#Usage - if you do not have the ability to run scripts directly from the web,
|
||||
# pull all files in this repo folder and execute, this script
|
||||
# automatically prefers local copies of sub-scripts
|
||||
|
||||
#Completely automated install requires a root account or sudo with a password requirement
|
||||
|
||||
#Switches
|
||||
# -includeide - the script is being run headless, do not perform actions that require response from the console
|
||||
# -interactivetesting - requires a human user in front of the machine - loads a script into the ide to test with F5 to ensure the IDE can run scripts
|
||||
# -appimage - does appimage instead of native install
|
||||
|
||||
#gitrepo paths are overrideable to run from your own fork or branch for testing or private distribution
|
||||
|
||||
VERSION="1.1.0"
|
||||
gitreposubpath="PowerShell/PowerShell/master"
|
||||
gitreposubpath="darwinjs/PowerShell/feature/install-powershell.sh"
|
||||
gitreposcriptroot="https://raw.githubusercontent.com/$gitreposubpath/tools"
|
||||
gitscriptname="install-powershell.psh"
|
||||
|
||||
echo "Get-PowerShell Core MASTER Installer Version $VERSION"
|
||||
echo "Installs PowerShell Core and Optional The Development Environment"
|
||||
echo " Original script is at: $gitreposcriptroot\$gitscriptname"
|
||||
|
||||
echo "Arguments used: $*"
|
||||
echo ""
|
||||
|
||||
# Let's quit on interrupt of subcommands
|
||||
trap '
|
||||
trap - INT # restore default INT handler
|
||||
echo "Interrupted"
|
||||
kill -s INT "$$"
|
||||
' INT
|
||||
|
||||
lowercase(){
|
||||
echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
|
||||
}
|
||||
|
||||
OS=`lowercase \`uname\``
|
||||
KERNEL=`uname -r`
|
||||
MACH=`uname -m`
|
||||
|
||||
if [ "${OS}" == "windowsnt" ]; then
|
||||
OS=windows
|
||||
DistroBasedOn=windows
|
||||
elif [ "${OS}" == "darwin" ]; then
|
||||
OS=osx
|
||||
DistroBasedOn=osx
|
||||
else
|
||||
OS=`uname`
|
||||
if [ "${OS}" == "SunOS" ] ; then
|
||||
OS=solaris
|
||||
ARCH=`uname -p`
|
||||
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
|
||||
DistroBasedOn=sunos
|
||||
elif [ "${OS}" == "AIX" ] ; then
|
||||
OSSTR="${OS} `oslevel` (`oslevel -r`)"
|
||||
DistroBasedOn=aix
|
||||
elif [ "${OS}" == "Linux" ] ; then
|
||||
if [ -f /etc/redhat-release ] ; then
|
||||
DistroBasedOn='redhat'
|
||||
DIST=`cat /etc/redhat-release |sed s/\ release.*//`
|
||||
PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
|
||||
REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
|
||||
elif [ -f /etc/SuSE-release ] ; then
|
||||
DistroBasedOn='suse'
|
||||
PSUEDONAME=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
|
||||
REV=`cat /etc/SuSE-release | grep 'VERSION' | sed s/.*=\ //`
|
||||
elif [ -f /etc/mandrake-release ] ; then
|
||||
DistroBasedOn='mandrake'
|
||||
PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
|
||||
REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
|
||||
elif [ -f /etc/debian_version ] ; then
|
||||
DistroBasedOn='debian'
|
||||
DIST=`cat /etc/lsb-release | grep '^DISTRIB_ID' | awk -F= '{ print $2 }'`
|
||||
PSUEDONAME=`cat /etc/lsb-release | grep '^DISTRIB_CODENAME' | awk -F= '{ print $2 }'`
|
||||
REV=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }'`
|
||||
fi
|
||||
if [ -f /etc/UnitedLinux-release ] ; then
|
||||
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
|
||||
fi
|
||||
OS=`lowercase $OS`
|
||||
DistroBasedOn=`lowercase $DistroBasedOn`
|
||||
readonly OS
|
||||
readonly DIST
|
||||
readonly DistroBasedOn
|
||||
readonly PSUEDONAME
|
||||
readonly REV
|
||||
readonly KERNEL
|
||||
readonly MACH
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
echo "Operating System Details:"
|
||||
echo " OS: $OS"
|
||||
echo " DIST: $DIST"
|
||||
echo " DistroBasedOn: $DistroBasedOn"
|
||||
echo " PSUEDONAME: $PSUEDONAME"
|
||||
echo " REV: $REV"
|
||||
echo " KERNEL: $KERNEL"
|
||||
echo " MACH: $MACH"
|
||||
|
||||
SCRIPTFOLDER=$(dirname $(readlink -f $0))
|
||||
|
||||
if [[ "'$*'" =~ appimage ]] ; then
|
||||
if [ -f $SCRIPTFOLDER/appimage.sh ]; then
|
||||
#Script files were copied local - use them
|
||||
. $SCRIPTFOLDER/appimage.sh
|
||||
else
|
||||
#Script files are not local - pull from remote
|
||||
echo "Could not find \"appimage.sh\" next to this script..."
|
||||
echo "Pulling it from \"$gitreposcriptroot/appimage.sh\""
|
||||
bash <(wget -qO- $gitreposcriptroot/appimage.sh) $@
|
||||
fi
|
||||
elif [ "$DistroBasedOn" == "redhat" ] || [ "$DistroBasedOn" == "debian" ] || [ "$DistroBasedOn" == "osx" ] || [ "$DistroBasedOn" == "suse" ]; then
|
||||
echo "Configuring PowerShell Core Enviornment for: $DistroBasedOn $DIST $REV"
|
||||
if [ -f $SCRIPTFOLDER/installpsh-$DistroBasedOn.sh ]; then
|
||||
#Script files were copied local - use them
|
||||
. $SCRIPTFOLDER/installpsh-$DistroBasedOn.sh
|
||||
else
|
||||
#Script files are not local - pull from remote
|
||||
echo "Could not find \"installpsh-$DistroBasedOn.sh\" next to this script..."
|
||||
echo "Pulling it from \"$gitreposcriptroot/installpsh-$DistroBasedOn.sh\""
|
||||
bash <(wget -qO- $gitreposcriptroot/installpsh-$DistroBasedOn.sh) $@
|
||||
fi
|
||||
else
|
||||
echo "Sorry, your operating system is based on $DistroBasedOn and is not supported by PowerShell Core or this installer at this time."
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Companion code for the blog https://cloudywindows.com
|
||||
#call this code direction from the web with:
|
||||
#bash <(wget -O - https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/pshcoredevenv-debian.sh) ARGUMENTS
|
||||
#bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
|
||||
#Usage - if you do not have the ability to run scripts directly from the web,
|
||||
# pull all files in this repo folder and execute, this script
|
||||
# automatically prefers local copies of sub-scripts
|
||||
|
||||
#Completely automated install requires a root account or sudo with a password requirement
|
||||
|
||||
#Switches
|
||||
# -includeide - the script is being run headless, do not perform actions that require response from the console
|
||||
# -interactivetests - requires a human user in front of the machine - loads a script into the ide to test with F5 to ensure the IDE can run scripts
|
||||
|
||||
#gitrepo paths are overrideable to run from your own fork or branch for testing or private distribution
|
||||
|
||||
|
||||
VERSION="1.1.2"
|
||||
gitreposubpath="PowerShell/PowerShell/master"
|
||||
gitreposubpath="darwinjs/PowerShell/feature/install-powershell.sh"
|
||||
gitreposcriptroot="https://raw.githubusercontent.com/$gitreposubpath/tools"
|
||||
thisinstallerdistro=debian
|
||||
repobased=true
|
||||
gitscriptname="installpsh-debian.psh"
|
||||
|
||||
echo ;
|
||||
echo "*** PowerShell Core Development Environment Installer $VERSION for $thisinstallerdistro"
|
||||
echo "*** Current PowerShell Core Version: $currentpshversion"
|
||||
echo "*** Original script is at: $gitreposcriptroot/$gitscriptname"
|
||||
echo
|
||||
echo "*** Arguments used: $*"
|
||||
|
||||
#Verify The Installer Choice (for direct runs of this script)
|
||||
lowercase(){
|
||||
#echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
|
||||
echo "$1" | tr [A-Z] [a-z]
|
||||
}
|
||||
|
||||
# Let's quit on interrupt of subcommands
|
||||
trap '
|
||||
trap - INT # restore default INT handler
|
||||
echo "Interrupted"
|
||||
kill -s INT "$$"
|
||||
' INT
|
||||
|
||||
if [ "${OS}" == "windowsnt" ]; then
|
||||
OS=windows
|
||||
DistroBasedOn=windows
|
||||
elif [ "${OS}" == "darwin" ]; then
|
||||
OS=osx
|
||||
DistroBasedOn=osx
|
||||
else
|
||||
OS=`uname`
|
||||
if [ "${OS}" == "SunOS" ] ; then
|
||||
OS=solaris
|
||||
ARCH=`uname -p`
|
||||
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
|
||||
DistroBasedOn=sunos
|
||||
elif [ "${OS}" == "AIX" ] ; then
|
||||
OSSTR="${OS} `oslevel` (`oslevel -r`)"
|
||||
DistroBasedOn=aix
|
||||
elif [ "${OS}" == "Linux" ] ; then
|
||||
if [ -f /etc/redhat-release ] ; then
|
||||
DistroBasedOn='redhat'
|
||||
elif [ -f /etc/SuSE-release ] ; then
|
||||
DistroBasedOn='suse'
|
||||
elif [ -f /etc/mandrake-release ] ; then
|
||||
DistroBasedOn='mandrake'
|
||||
elif [ -f /etc/debian_version ] ; then
|
||||
DistroBasedOn='debian'
|
||||
fi
|
||||
if [ -f /etc/UnitedLinux-release ] ; then
|
||||
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
|
||||
DistroBasedOn=unitedlinux
|
||||
fi
|
||||
OS=`lowercase $OS`
|
||||
DistroBasedOn=`lowercase $DistroBasedOn`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DistroBasedOn" != "$thisinstallerdistro" ]; then
|
||||
echo "*** This installer is only for $thisinstallerdistro and you are running $DistroBasedOn, please run \"$gitreporoot\install-powershell.sh\" to see if your distro is supported AND to auto-select the appropriate installer if it is."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
## Check requirements and prerequisites
|
||||
|
||||
#Only do SUDO if we are not root
|
||||
SUDO=''
|
||||
if (( $EUID != 0 )); then
|
||||
SUDO='sudo'
|
||||
fi
|
||||
|
||||
#Check that sudo is available
|
||||
if [[ "$SUDO" -eq "sudo" ]]; then
|
||||
|
||||
$SUDO -v
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: You must either be root or be able to use sudo" >&2
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
|
||||
#Collect any variation details if required for this distro
|
||||
REV=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }'`
|
||||
#END Collect any variation details if required for this distro
|
||||
|
||||
#If there are known incompatible versions of this distro, put the test, message and script exit here:
|
||||
|
||||
#END Verify The Installer Choice
|
||||
|
||||
##END Check requirements and prerequisites
|
||||
|
||||
echo
|
||||
echo "*** Installing PowerShell Core for $DistroBasedOn..."
|
||||
if ! hash curl 2>/dev/null; then
|
||||
echo "curl not found, installing..."
|
||||
$SUDO apt-get install -y curl
|
||||
fi
|
||||
release=`curl https://api.github.com/repos/powershell/powershell/releases/latest | sed '/tag_name/!d' | sed s/\"tag_name\"://g | sed s/\"//g | sed s/v//g | sed s/,//g | sed s/\ //g`
|
||||
|
||||
echo "*** Current version on git is: $currentversion, repo version may differ slightly..."
|
||||
echo "*** Setting up PowerShell Core repo..."
|
||||
# Import the public repository GPG keys
|
||||
curl https://packages.microsoft.com/keys/microsoft.asc | $SUDO apt-key add -
|
||||
#Add the Repo
|
||||
curl https://packages.microsoft.com/config/ubuntu/$REV/prod.list | $SUDO tee /etc/apt/sources.list.d/microsoft.list
|
||||
# Update apt-get
|
||||
$SUDO apt-get update
|
||||
# Install PowerShell
|
||||
$SUDO apt-get install -y powershell
|
||||
|
||||
powershell -noprofile -c '"Congratulations! PowerShell is installed at $PSHOME"'
|
||||
success=$?
|
||||
|
||||
if [[ "$success" != 0 ]]; then
|
||||
echo "ERROR: PowerShell failed to install!" >&2
|
||||
exit "$success"
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ includeide ]] ; then
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell IDE..."
|
||||
echo "*** Setting up VS Code repo..."
|
||||
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
|
||||
$SUDO mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
|
||||
$SUDO sh -c 'echo "deb [arch=amd64] http://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y code
|
||||
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell Extension"
|
||||
code --install-extension ms-vscode.PowerShell
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ -interactivetesting ]] ; then
|
||||
echo "*** Loading test code in VS Code"
|
||||
curl -O ./testpowershell.ps1 https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/testpowershell.ps1
|
||||
code ./testpowershell.ps1
|
||||
fi
|
||||
|
||||
if [[ "$repobased" == true ]] ; then
|
||||
echo
|
||||
echo "*** NOTE: Run your regular package manager update cycle to update PowerShell Core\n"
|
||||
fi
|
||||
echo "*** Install Complete"
|
||||
@@ -0,0 +1,185 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Companion code for the blog https://cloudywindows.com
|
||||
#call this code direction from the web with:
|
||||
#bash <(wget -O - https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/pshcoredevenv-debian.sh) ARGUMENTS
|
||||
#bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
|
||||
#Usage - if you do not have the ability to run scripts directly from the web,
|
||||
# pull all files in this repo folder and execute, this script
|
||||
# automatically prefers local copies of sub-scripts
|
||||
|
||||
#Completely automated install requires a root account or sudo with a password requirement
|
||||
|
||||
#Switches
|
||||
# -includeide - the script is being run headless, do not perform actions that require response from the console
|
||||
# -interactivetests - requires a human user in front of the machine - loads a script into the ide to test with F5 to ensure the IDE can run scripts
|
||||
|
||||
#gitrepo paths are overrideable to run from your own fork or branch for testing or private distribution
|
||||
|
||||
|
||||
VERSION="1.1.2"
|
||||
gitreposubpath="PowerShell/PowerShell/master"
|
||||
gitreposubpath="darwinjs/PowerShell/feature/install-powershell.sh"
|
||||
gitreposcriptroot="https://raw.githubusercontent.com/$gitreposubpath/tools"
|
||||
thisinstallerdistro=osx
|
||||
repobased=true
|
||||
gitscriptname="installpsh-osx.psh"
|
||||
|
||||
echo "\n*** PowerShell Core Development Environment Installer $VERSION for $thisinstallerdistro"
|
||||
echo "*** Current PowerShell Core Version: $currentpshversion"
|
||||
echo "*** Original script is at: $gitreposcriptroot/$gitscriptname"
|
||||
echo "\n*** Arguments used: $* \n\n"
|
||||
|
||||
# Let's quit on interrupt of subcommands
|
||||
trap '
|
||||
trap - INT # restore default INT handler
|
||||
echo "Interrupted"
|
||||
kill -s INT "$$"
|
||||
' INT
|
||||
|
||||
#Verify The Installer Choice (for direct runs of this script)
|
||||
lowercase(){
|
||||
echo "$1" | tr [A-Z] [a-z]
|
||||
}
|
||||
if [ "${OS}" == "windowsnt" ]; then
|
||||
OS=windows
|
||||
DistroBasedOn=windows
|
||||
elif [ "${OS}" == "darwin" ]; then
|
||||
OS=osx
|
||||
DistroBasedOn=osx
|
||||
else
|
||||
OS=`uname`
|
||||
if [ "${OS}" == "SunOS" ] ; then
|
||||
OS=solaris
|
||||
ARCH=`uname -p`
|
||||
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
|
||||
DistroBasedOn=sunos
|
||||
elif [ "${OS}" == "AIX" ] ; then
|
||||
OSSTR="${OS} `oslevel` (`oslevel -r`)"
|
||||
DistroBasedOn=aix
|
||||
elif [ "${OS}" == "Linux" ] ; then
|
||||
if [ -f /etc/redhat-release ] ; then
|
||||
DistroBasedOn='redhat'
|
||||
elif [ -f /etc/SuSE-release ] ; then
|
||||
DistroBasedOn='suse'
|
||||
elif [ -f /etc/mandrake-release ] ; then
|
||||
DistroBasedOn='mandrake'
|
||||
elif [ -f /etc/debian_version ] ; then
|
||||
DistroBasedOn='debian'
|
||||
fi
|
||||
if [ -f /etc/UnitedLinux-release ] ; then
|
||||
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
|
||||
DistroBasedOn=unitedlinux
|
||||
fi
|
||||
OS=`lowercase $OS`
|
||||
DistroBasedOn=`lowercase $DistroBasedOn`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DistroBasedOn" != "$thisinstallerdistro" ]; then
|
||||
echo "*** This installer is only for $thisinstallerdistro and you are running $DistroBasedOn, please run \"$gitreporoot\install-powershell.sh\" to see if your distro is supported AND to auto-select the appropriate installer if it is."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
## Check requirements and prerequisites
|
||||
|
||||
#Only do SUDO if we are not root
|
||||
SUDO=''
|
||||
if (( $EUID != 0 )); then
|
||||
SUDO='sudo'
|
||||
fi
|
||||
|
||||
#Check that sudo is available
|
||||
if [[ "$SUDO" -eq "sudo" ]]; then
|
||||
|
||||
$SUDO -v
|
||||
if [ $? -ne 0]; then
|
||||
echo "ERROR: You must either be root or be able to use sudo" >&2
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
|
||||
#END Collect any variation details if required for this distro
|
||||
|
||||
#If there are known incompatible versions of this distro, put the test, message and script exit here:
|
||||
|
||||
#END Verify The Installer Choice
|
||||
|
||||
##END Check requirements and prerequisites
|
||||
|
||||
echo "\n*** Installing PowerShell Core for $DistroBasedOn..."
|
||||
|
||||
#release=`curl https://api.github.com/repos/powershell/powershell/releases/latest | sed '/tag_name/!d' | sed s/\"tag_name\"://g | sed s/\"//g | sed s/v//g | sed s/,//g | sed s/\ //g`
|
||||
|
||||
if ! hash brew 2>/dev/null; then
|
||||
echo "Homebrew is not found, installing..."
|
||||
$SUDO ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
|
||||
fi
|
||||
|
||||
if hash brew 2>/dev/null; then
|
||||
echo "ERROR: brew did not install correctly, exiting..." >&2
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [[ ! -d $(brew --prefix openssl) ]]; then
|
||||
echo "Installing OpenSSL..."
|
||||
if ! $SUDO brew install openssl; then
|
||||
echo "ERROR: OpenSSL failed to install! Crypto functions will not work..." >&2
|
||||
fi
|
||||
else
|
||||
$SUDO brew upgrade openssl
|
||||
fi
|
||||
|
||||
if [[ ! -d $(brew --prefix curl) ]]; then
|
||||
if ! $SUDO brew install curl --with-openssl; then
|
||||
echo "ERROR: curl failed to build against OpenSSL; SSL functions will not work..." >&2
|
||||
fi
|
||||
else
|
||||
if ! $SUDO brew reinstall curl --with-openssl; then
|
||||
echo "ERROR: curl failed to build against OpenSSL; SSL functions will not work..." >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -d $(brew --prefix powershell) ]]; then
|
||||
if ! $SUDO brew install powershell; then
|
||||
echo "ERROR: powershell failed to install..." >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
$SUDO brew upgrade powershell
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ includeide ]] ; then
|
||||
echo "\n*** Installing VS Code PowerShell IDE..."
|
||||
if [[ ! -d $(brew --prefix visual-studio-code) ]]; then
|
||||
if ! $SUDO brew install visual-studio-code; then
|
||||
echo "ERROR: Visual Studio Code failed to install..." >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
$SUDO brew upgrade visual-studio-code
|
||||
fi
|
||||
|
||||
echo "\n*** Installing VS Code PowerShell Extension"
|
||||
$SUDO code --install-extension ms-vscode.PowerShell
|
||||
fi
|
||||
|
||||
powershell -noprofile -c '"Congratulations! PowerShell is installed at $PSHOME"'
|
||||
success=$?
|
||||
|
||||
if [[ "$success" != 0 ]]; then
|
||||
echo "ERROR: PowerShell failed to install!" >&2
|
||||
exit "$success"
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ -interactivetesting ]] ; then
|
||||
echo "*** Loading test code in VS Code"
|
||||
$SUDO curl -O ./testpowershell.ps1 https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/testpowershell.ps1
|
||||
code ./testpowershell.ps1
|
||||
fi
|
||||
|
||||
if [[ "$repobased" == true ]] ; then
|
||||
echo "*** NOTE: Run your regular package manager update cycle to update PowerShell Core"
|
||||
fi
|
||||
echo "*** Install Complete"
|
||||
@@ -0,0 +1,162 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Companion code for the blog https://cloudywindows.com
|
||||
#call this code direction from the web with:
|
||||
#bash <(wget -O - https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/pshcoredevenv-debian.sh) ARGUMENTS
|
||||
#bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
|
||||
#Usage - if you do not have the ability to run scripts directly from the web,
|
||||
# pull all files in this repo folder and execute, this script
|
||||
# automatically prefers local copies of sub-scripts
|
||||
|
||||
#Completely automated install requires a root account or sudo with a password requirement
|
||||
|
||||
#Switches
|
||||
# -includeide - the script is being run headless, do not perform actions that require response from the console
|
||||
# -interactivetests - requires a human user in front of the machine - loads a script into the ide to test with F5 to ensure the IDE can run scripts
|
||||
|
||||
#gitrepo paths are overrideable to run from your own fork or branch for testing or private distribution
|
||||
|
||||
|
||||
VERSION="1.1.2"
|
||||
gitreposubpath="PowerShell/PowerShell/master"
|
||||
gitreposubpath="darwinjs/PowerShell/feature/install-powershell.sh"
|
||||
gitreposcriptroot="https://raw.githubusercontent.com/$gitreposubpath/tools"
|
||||
thisinstallerdistro=redhat
|
||||
repobased=true
|
||||
gitscriptname="installpsh-redhat.psh"
|
||||
|
||||
echo
|
||||
echo "*** PowerShell Core Development Environment Installer $VERSION for $thisinstallerdistro"
|
||||
echo "*** Current PowerShell Core Version: $currentpshversion"
|
||||
echo "*** Original script is at: $gitreposcriptroot/$gitscriptname"
|
||||
echo
|
||||
echo "*** Arguments used: $* "
|
||||
echo
|
||||
|
||||
# Let's quit on interrupt of subcommands
|
||||
trap '
|
||||
trap - INT # restore default INT handler
|
||||
echo "Interrupted"
|
||||
kill -s INT "$$"
|
||||
' INT
|
||||
|
||||
#Verify The Installer Choice (for direct runs of this script)
|
||||
lowercase(){
|
||||
#echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
|
||||
echo "$1" | tr [A-Z] [a-z]
|
||||
}
|
||||
if [ "${OS}" == "windowsnt" ]; then
|
||||
OS=windows
|
||||
DistroBasedOn=windows
|
||||
elif [ "${OS}" == "darwin" ]; then
|
||||
OS=osx
|
||||
DistroBasedOn=osx
|
||||
else
|
||||
OS=`uname`
|
||||
if [ "${OS}" == "SunOS" ] ; then
|
||||
OS=solaris
|
||||
ARCH=`uname -p`
|
||||
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
|
||||
DistroBasedOn=sunos
|
||||
elif [ "${OS}" == "AIX" ] ; then
|
||||
OSSTR="${OS} `oslevel` (`oslevel -r`)"
|
||||
DistroBasedOn=aix
|
||||
elif [ "${OS}" == "Linux" ] ; then
|
||||
if [ -f /etc/redhat-release ] ; then
|
||||
DistroBasedOn='redhat'
|
||||
elif [ -f /etc/SuSE-release ] ; then
|
||||
DistroBasedOn='suse'
|
||||
elif [ -f /etc/mandrake-release ] ; then
|
||||
DistroBasedOn='mandrake'
|
||||
elif [ -f /etc/debian_version ] ; then
|
||||
DistroBasedOn='debian'
|
||||
fi
|
||||
if [ -f /etc/UnitedLinux-release ] ; then
|
||||
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
|
||||
DistroBasedOn=unitedlinux
|
||||
fi
|
||||
OS=`lowercase $OS`
|
||||
DistroBasedOn=`lowercase $DistroBasedOn`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DistroBasedOn" != "$thisinstallerdistro" ]; then
|
||||
echo "*** This installer is only for $thisinstallerdistro and you are running $DistroBasedOn, please run \"$gitreporoot\install-powershell.sh\" to see if your distro is supported AND to auto-select the appropriate installer if it is."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
## Check requirements and prerequisites
|
||||
|
||||
#Only do SUDO if we are not root
|
||||
SUDO=''
|
||||
if (( $EUID != 0 )); then
|
||||
SUDO='sudo'
|
||||
fi
|
||||
|
||||
#Check that sudo is available
|
||||
if [[ "$SUDO" -eq "sudo" ]]; then
|
||||
|
||||
$SUDO -v
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: You must either be root or be able to use sudo" >&2
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
|
||||
#Collect any variation details if required for this distro
|
||||
|
||||
#END Collect any variation details if required for this distro
|
||||
|
||||
#If there are known incompatible versions of this distro, put the test, message and script exit here:
|
||||
|
||||
#END Verify The Installer Choice
|
||||
|
||||
##END Check requirements and prerequisites
|
||||
|
||||
echo
|
||||
echo "*** Installing PowerShell Core for $DistroBasedOn..."
|
||||
if ! hash curl 2>/dev/null; then
|
||||
echo "curl not found, installing..."
|
||||
$SUDO yum install -y curl
|
||||
fi
|
||||
release=`curl https://api.github.com/repos/powershell/powershell/releases/latest | sed '/tag_name/!d' | sed s/\"tag_name\"://g | sed s/\"//g | sed s/v//g | sed s/,//g | sed s/\ //g`
|
||||
|
||||
echo "*** Current version on git is: $release, repo version may differ slightly..."
|
||||
|
||||
echo "*** Setting up PowerShell Core repo..."
|
||||
$SUDO curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/microsoft.repo
|
||||
$SUDO yum install -y powershell
|
||||
|
||||
powershell -noprofile -c '"Congratulations! PowerShell is installed at $PSHOME"'
|
||||
success=$?
|
||||
|
||||
if [[ "$success" != 0 ]]; then
|
||||
echo "ERROR: PowerShell failed to install!" >&2
|
||||
exit "$success"
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ includeide ]] ; then
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell IDE..."
|
||||
echo "*** Setting up VS Code repo..."
|
||||
$SUDO rpm --import https://packages.microsoft.com/keys/microsoft.asc
|
||||
$SUDO sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
|
||||
yum check-update
|
||||
$SUDO yum install -y code
|
||||
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell Extension"
|
||||
code --install-extension ms-vscode.PowerShell
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ -interactivetesting ]] ; then
|
||||
echo "*** Loading test code in VS Code"
|
||||
curl -O ./testpowershell.ps1 https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/testpowershell.ps1
|
||||
code ./testpowershell.ps1
|
||||
fi
|
||||
|
||||
if [[ "$repobased" == true ]] ; then
|
||||
echo "*** NOTE: Run your regular package manager update cycle to update PowerShell Core"
|
||||
fi
|
||||
echo "*** Install Complete"
|
||||
@@ -0,0 +1,192 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Companion code for the blog https://cloudywindows.com
|
||||
#call this code direction from the web with:
|
||||
#bash <(wget -O - https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/pshcoredevenv-debian.sh) ARGUMENTS
|
||||
#bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) <ARGUMENTS>
|
||||
|
||||
#Usage - if you do not have the ability to run scripts directly from the web,
|
||||
# pull all files in this repo folder and execute, this script
|
||||
# automatically prefers local copies of sub-scripts
|
||||
|
||||
#Completely automated install requires a root account or sudo with a password requirement
|
||||
|
||||
#Switches
|
||||
# -includeide - the script is being run headless, do not perform actions that require response from the console
|
||||
# -interactivetests - requires a human user in front of the machine - loads a script into the ide to test with F5 to ensure the IDE can run scripts
|
||||
|
||||
#gitrepo paths are overrideable to run from your own fork or branch for testing or private distribution
|
||||
|
||||
|
||||
VERSION="1.1.2"
|
||||
gitreposubpath="PowerShell/PowerShell/master"
|
||||
gitreposubpath="darwinjs/PowerShell/feature/install-powershell.sh"
|
||||
gitreposcriptroot="https://raw.githubusercontent.com/$gitreposubpath/tools"
|
||||
thisinstallerdistro=suse
|
||||
repobased=true
|
||||
gitscriptname="installpsh-suse.psh"
|
||||
|
||||
echo
|
||||
echo "*** PowerShell Core Development Environment Installer $VERSION for $thisinstallerdistro"
|
||||
echo "*** Current PowerShell Core Version: $currentpshversion"
|
||||
echo "*** Original script is at: $gitreposcriptroot/$gitscriptname"
|
||||
echo
|
||||
echo "*** Arguments used: $*"
|
||||
echo
|
||||
|
||||
# Let's quit on interrupt of subcommands
|
||||
trap '
|
||||
trap - INT # restore default INT handler
|
||||
echo "Interrupted"
|
||||
kill -s INT "$$"
|
||||
' INT
|
||||
|
||||
#Verify The Installer Choice (for direct runs of this script)
|
||||
lowercase(){
|
||||
#echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
|
||||
echo "$1" | tr [A-Z] [a-z]
|
||||
}
|
||||
if [ "${OS}" == "windowsnt" ]; then
|
||||
OS=windows
|
||||
DistroBasedOn=windows
|
||||
elif [ "${OS}" == "darwin" ]; then
|
||||
OS=osx
|
||||
DistroBasedOn=osx
|
||||
else
|
||||
OS=`uname`
|
||||
if [ "${OS}" == "SunOS" ] ; then
|
||||
OS=solaris
|
||||
ARCH=`uname -p`
|
||||
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
|
||||
DistroBasedOn=sunos
|
||||
elif [ "${OS}" == "AIX" ] ; then
|
||||
OSSTR="${OS} `oslevel` (`oslevel -r`)"
|
||||
DistroBasedOn=aix
|
||||
elif [ "${OS}" == "Linux" ] ; then
|
||||
if [ -f /etc/redhat-release ] ; then
|
||||
DistroBasedOn='redhat'
|
||||
elif [ -f /etc/SuSE-release ] ; then
|
||||
DistroBasedOn='suse'
|
||||
elif [ -f /etc/mandrake-release ] ; then
|
||||
DistroBasedOn='mandrake'
|
||||
elif [ -f /etc/debian_version ] ; then
|
||||
DistroBasedOn='debian'
|
||||
fi
|
||||
if [ -f /etc/UnitedLinux-release ] ; then
|
||||
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION//`]"
|
||||
DistroBasedOn=unitedlinux
|
||||
fi
|
||||
OS=`lowercase $OS`
|
||||
DistroBasedOn=`lowercase $DistroBasedOn`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DistroBasedOn" != "$thisinstallerdistro" ]; then
|
||||
echo "*** This installer is only for $thisinstallerdistro and you are running $DistroBasedOn, please run \"$gitreporoot\install-powershell.sh\" to see if your distro is supported AND to auto-select the appropriate installer if it is."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
## Check requirements and prerequisites
|
||||
|
||||
#Only do SUDO if we are not root
|
||||
SUDO=''
|
||||
if (( $EUID != 0 )); then
|
||||
SUDO='sudo'
|
||||
fi
|
||||
|
||||
#Check that sudo is available
|
||||
if [[ "$SUDO" -eq "sudo" ]]; then
|
||||
|
||||
$SUDO -v
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: You must either be root or be able to use sudo" >&2
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
|
||||
#Collect any variation details if required for this distro
|
||||
REV=`cat /etc/SuSE-release | grep 'VERSION' | sed s/.*=\ //`
|
||||
MAJORREV=`echo $REV | sed 's/\..*//'`
|
||||
#END Collect any variation details if required for this distro
|
||||
|
||||
#If there are known incompatible versions of this distro, put the test, message and script exit here:
|
||||
if [[ $MAJORREV < 42 ]]; then
|
||||
echo "OpenSUSE $VERSION_ID is not supported!" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
#END Verify The Installer Choice
|
||||
|
||||
|
||||
##END Check requirements and prerequisites
|
||||
|
||||
echo
|
||||
echo "*** Installing PowerShell Core for $DistroBasedOn..."
|
||||
if ! hash curl 2>/dev/null; then
|
||||
echo "curl not found, installing..."
|
||||
$SUDO zypper install -y curl
|
||||
fi
|
||||
release=`curl https://api.github.com/repos/powershell/powershell/releases/latest | sed '/tag_name/!d' | sed s/\"tag_name\"://g | sed s/\"//g | sed s/v//g | sed s/,//g | sed s/\ //g`
|
||||
|
||||
#REPO BASED (Not ready yet)
|
||||
#echo "*** Setting up PowerShell Core repo..."
|
||||
#echo "*** Current version on git is: $release, repo version may differ slightly..."
|
||||
## Install the Microsoft public key so that zypper trusts the package
|
||||
#sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
|
||||
##Add the Repo
|
||||
#$SUDO sh -c 'echo -e "[code]\nname=PowerShell Core\nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-sles12-prod\nenabled=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/zypp/repos.d/powershellcore.repo'
|
||||
## Update zypper
|
||||
#$SUDO zypper refresh
|
||||
## Install PowerShell
|
||||
#$SUDO zypper --non-interactive install powershell
|
||||
|
||||
#DIRECT DOWNLOAD
|
||||
packagerel=`echo $release | sed 's/-/_/'`
|
||||
package=powershell-${packagerel}-1.suse.42.1.x86_64.rpm
|
||||
downloadurl=https://github.com/PowerShell/PowerShell/releases/download/v$release/$package
|
||||
|
||||
echo "Destination file: $package"
|
||||
echo "Source URL: $downloadurl"
|
||||
|
||||
curl -L -o "$package" "$downloadurl"
|
||||
|
||||
if [[ ! -r "$package" ]]; then
|
||||
echo "ERROR: $package failed to download! Aborting..." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
|
||||
sudo zypper --non-interactive install "./$package"
|
||||
|
||||
powershell -noprofile -c '"Congratulations! PowerShell is installed at $PSHOME"'
|
||||
success=$?
|
||||
|
||||
if [[ "$success" != 0 ]]; then
|
||||
echo "ERROR: PowerShell failed to install!" >&2
|
||||
exit "$success"
|
||||
fi
|
||||
|
||||
if [[ "'$*'" =~ includeide ]] ; then
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell IDE..."
|
||||
echo "*** Setting up VS Code repo..."
|
||||
$SUDO sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/zypp/repos.d/vscode.repo'
|
||||
$SUDO zypper refresh
|
||||
$SUDO zypper --non-interactive install code
|
||||
|
||||
echo
|
||||
echo "*** Installing VS Code PowerShell Extension"
|
||||
code --install-extension ms-vscode.PowerShell
|
||||
fi
|
||||
|
||||
|
||||
if [[ "'$*'" =~ -interactivetesting ]] ; then
|
||||
echo "*** Loading test code in VS Code"
|
||||
curl -O ./testpowershell.ps1 https://raw.githubusercontent.com/DarwinJS/CloudyWindowsAutomationCode/master/pshcoredevenv/testpowershell.ps1
|
||||
code ./testpowershell.ps1
|
||||
fi
|
||||
|
||||
if [[ "$repobased" == true ]] ; then
|
||||
echo "*** NOTE: Run your regular package manager update cycle to update PowerShell Core"
|
||||
fi
|
||||
echo "*** Install Complete"
|
||||
Reference in New Issue
Block a user