2017-03-28 01:44:28 +02:00
# Package Installation Instructions
2016-06-17 01:38:57 +02:00
2017-03-28 01:44:28 +02:00
## MSI
2017-05-02 19:14:17 +02:00
To install PowerShell on Windows Full SKU (works on Windows 7 SP1 and later), download either the MSI from [AppVeyor][] for a nightly build,
2017-04-07 21:03:29 +02:00
or a released package from our GitHub [releases][] page. The MSI file looks like this - `PowerShell-6.0.0.<buildversion>.<os-arch>.msi`
2016-07-27 20:11:29 +02:00
2016-07-17 15:37:33 +02:00
Once downloaded, double-click the installer and follow the prompts.
2016-06-17 01:38:57 +02:00
2016-08-01 23:03:51 +02:00
There is a shortcut placed in the Start Menu upon installation.
2017-03-28 01:44:28 +02:00
* By default the package is installed to `$env:ProgramFiles\PowerShell\`
* You can launch PowerShell via the Start Menu or `$env:ProgramFiles\PowerShell\powershell.exe`
2017-05-02 19:14:17 +02:00
### Prerequisites
* Install the [Universal C Runtime ](https://www.microsoft.com/en-us/download/details.aspx?id=50410 ) on Windows versions prior to Windows 10.
It is available via direct download or Windows Update.
Fully patched (including optional packages), supported systems will already have this installed.
2017-06-12 23:33:35 +02:00
* Install the [Visual C++ Redistributable ](https://my.visualstudio.com/Downloads?pid=2082 ) for VS2015.
2016-08-17 20:54:48 +02:00
2017-03-28 01:44:28 +02:00
## Deploying on Nano Server
2017-02-25 00:38:29 +01:00
These instructions assume that Windows PowerShell is running on the Nano Server image and that it has been generated by the [Nano Server Image Builder ](https://technet.microsoft.com/en-us/windows-server-docs/get-started/deploy-nano-server ).
Nano Server is a "headless" OS and deployment of PowerShell Core binaries can happen in two different ways:
1. Offline - Mount the Nano Server VHD and unzip the contents of the zip file to your chosen location within the mounted image.
2017-03-28 01:44:28 +02:00
1. Online - Transfer the zip file over a PowerShell Session and unzip it in your chosen location.
2017-02-25 00:38:29 +01:00
In both cases, you will need the Windows 10 x64 Zip release package and will need to run the commands within an "Administrator" PowerShell instance.
2017-03-28 01:44:28 +02:00
### Offline Deployment of PowerShell Core
2017-02-25 00:38:29 +01:00
1. Use your favorite zip utility to unzip the package to a directory within the mounted Nano Server image.
2017-03-28 01:44:28 +02:00
1. Unmount the image and boot it.
1. Connect to the inbox instance of Windows PowerShell.
1. Follow the instructions to create a remoting endpoint using the [another instance technique ](#executed-by-another-instance-of-powershell-on-behalf-of-the-instance-that-it-will-register ).
2017-02-25 00:38:29 +01:00
2017-03-28 01:44:28 +02:00
### Online Deployment of PowerShell Core
2017-02-25 00:38:29 +01:00
The following steps will guide you through the deployment of PowerShell Core to a running instance of Nano Server and the configuration of its remote endpoint.
* Connect to the inbox instance of Windows PowerShell
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
```powershell
$session = New-PSSession -ComputerName < Nano Server IP address > -Credential < An Administrator account on the system >
```
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
* Copy the file to the Nano Server instance
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
```powershell
Copy-Item < local PS Core download location > \powershell-< version > -win10-win2016-x64.zip c:\ -ToSession $session
```
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
* Enter the session
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
```powershell
Enter-PSSession $session
```
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
* Extract the Zip file
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
```powershell
# Insert the appropriate version.
Expand-Archive -Path C:\powershell-< version > -win10-win2016-x64.zip -DestinationPath "C:\PowerShellCore_< version > "
```
2017-03-28 01:44:28 +02:00
* Follow the instructions to create a remoting endpoint using the [another instance technique ](#executed-by-another-instance-of-powershell-on-behalf-of-the-instance-that-it-will-register ).
## Instructions to Create a Remoting Endpoint
2016-06-17 01:38:57 +02:00
2017-03-28 01:44:28 +02:00
Beginning with 6.0.0-alpha.9, the PowerShell package for Windows includes a WinRM plug-in (pwrshplugin.dll) and an installation script (Install-PowerShellRemoting.ps1).
These files enable PowerShell to accept incoming PowerShell remote connections when its endpoint is specified.
2016-07-27 20:11:29 +02:00
2017-03-28 01:44:28 +02:00
### Motivation
2016-08-17 00:12:33 +02:00
2017-03-28 01:44:28 +02:00
An installation of PowerShell can establish PowerShell sessions to remote computers using `New-PSSession` and `Enter-PSSession` .
To enable it to accept incoming PowerShell remote connections, the user must create a WinRM remoting endpoint.
This is an explicit opt-in scenario where the user runs Install-PowerShellRemoting.ps1 to create the WinRM endpoint.
The installation script is a short-term solution until we add additional functionality to `Enable-PSRemoting` to perform the same action.
2016-08-17 00:12:33 +02:00
For more details, please see issue [#1193 ](https://github.com/PowerShell/PowerShell/issues/1193 ).
2017-03-28 01:44:28 +02:00
### Script Actions
2016-08-17 00:12:33 +02:00
The script
2016-10-28 10:02:32 +02:00
1. Creates a directory for the plug-in within %windir%\System32\PowerShell
2017-03-28 01:44:28 +02:00
1. Copies pwrshplugin.dll to that location
1. Generates a configuration file
1. Registers that plug-in with WinRM
2016-08-17 00:12:33 +02:00
2017-03-28 01:44:28 +02:00
### Registration
2017-02-25 00:38:29 +01:00
2016-08-17 00:12:33 +02:00
The script must be executed within an Administrator-level PowerShell session and runs in two modes.
2017-03-28 01:44:28 +02:00
#### Executed by the instance of PowerShell that it will register
2016-08-17 00:12:33 +02:00
``` powershell
Install-PowerShellRemoting.ps1
2017-02-25 00:38:29 +01:00
```
2017-03-28 01:44:28 +02:00
#### Executed by another instance of PowerShell on behalf of the instance that it will register
2016-08-17 00:12:33 +02:00
``` powershell
< path to powershell > \Install-PowerShellRemoting.ps1 -PowerShellHome "< absolute path to the instance ' s $ PSHOME > " -PowerShellVersion "< the powershell version tag > "
```
2017-03-28 01:44:28 +02:00
2016-08-17 00:12:33 +02:00
For Example:
2017-03-28 01:44:28 +02:00
2016-08-17 00:12:33 +02:00
``` powershell
2017-03-28 01:44:28 +02:00
C:\Program Files\PowerShell\6.0.0.9\Install-PowerShellRemoting.ps1 -PowerShellHome "C:\Program Files\PowerShell\6.0.0.9\" -PowerShellVersion "6.0.0-alpha.9"
2016-08-17 00:12:33 +02:00
```
2017-03-28 01:44:28 +02:00
2017-02-25 00:38:29 +01:00
**NOTE:** The remoting registration script will restart WinRM, so all existing PSRP sessions will terminate immediately after the script is run. If run during a remote session, this will terminate the connection.
2016-08-17 00:12:33 +02:00
## How to Connect to the New Endpoint
Create a PowerShell session to the new PowerShell endpoint by specifying `-ConfigurationName "some endpoint name"` . To connect to the PowerShell instance from the example above, use either:
2017-03-28 01:44:28 +02:00
2016-08-17 00:12:33 +02:00
``` powershell
New-PSSession ... -ConfigurationName "powershell.6.0.0-alpha.9"
Enter-PSSession ... -ConfigurationName "powershell.6.0.0-alpha.9"
2017-03-28 01:44:28 +02:00
```
2016-08-17 00:12:33 +02:00
Note that `New-PSSession` and `Enter-PSSession` invocations that do not specify `-ConfigurationName` will target the default PowerShell endpoint, `microsoft.powershell` .
2017-03-28 01:44:28 +02:00
## Artifact Installation Instructions
2016-03-31 08:29:16 +02:00
2016-07-20 20:33:30 +02:00
We publish an archive with CoreCLR and FullCLR bits on every CI build with [AppVeyor][].
2016-03-31 08:29:16 +02:00
2016-07-20 20:33:30 +02:00
[releases]: https://github.com/PowerShell/PowerShell/releases
[signing]: ../../tools/Sign-Package.ps1
2016-07-17 15:37:33 +02:00
[AppVeyor]: https://ci.appveyor.com/project/PowerShell/powershell
2016-03-31 08:29:16 +02:00
2017-03-28 01:44:28 +02:00
## CoreCLR Artifacts
2016-03-31 08:29:16 +02:00
* Download zip package from **artifacts** tab of the particular build.
2016-07-17 15:37:33 +02:00
* Unblock zip file: right-click in File Explorer -> Properties ->
2016-03-31 08:29:16 +02:00
check 'Unblock' box -> apply
* Extract zip file to `bin` directory
* `./bin/powershell.exe`