Add instructions for installation on Nano Server (Fixes #3151) (#3195)

This commit is contained in:
Mike Richmond 2017-02-24 15:38:29 -08:00 committed by Dongbo Wang
parent d69193e49c
commit 254afcba04

View file

@ -16,6 +16,46 @@ There is a shortcut placed in the Start Menu upon installation.
> Note: On Windows 8.1 / Windows 2012R2, ensure Visual C++ Redistributable
> for VS2015 is installed from [here](http://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe):
# Deploying on Nano Server
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.
2. Online - Transfer the zip file over a PowerShell Session and unzip it in your chosen location.
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.
## Offline Deployment of PowerShell Core
1. Use your favorite zip utility to unzip the package to a directory within the mounted Nano Server image.
2. Unmount the image and boot it.
3. Connect to the inbox instance of Windows PowerShell.
4. 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).
## Online Deployment of PowerShell Core
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
```powershell
$session = New-PSSession -ComputerName <Nano Server IP address> -Credential <An Administrator account on the system>
```
* Copy the file to the Nano Server instance
```powershell
Copy-Item <local PS Core download location>\powershell-<version>-win10-win2016-x64.zip c:\ -ToSession $session
```
* Enter the session
```powershell
Enter-PSSession $session
```
* Extract the Zip file
```powershell
# Insert the appropriate version.
Expand-Archive -Path C:\powershell-<version>-win10-win2016-x64.zip -DestinationPath "C:\PowerShellCore_<version>"
```
* 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
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).
@ -23,10 +63,10 @@ These files enable PowerShell to accept incoming PowerShell remote connections w
## Motivation
An installation of PowerShell can establish PowerShell sessions to remote computers using ```New-PSSession``` and ```Enter-PSSession```.
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.
The installation script is a short-term solution until we add additional functionality to `Enable-PSRemoting` to perform the same action.
For more details, please see issue [#1193](https://github.com/PowerShell/PowerShell/issues/1193).
## Script Actions
@ -39,13 +79,14 @@ The script
4. Registers that plug-in with WinRM
## Registration
The script must be executed within an Administrator-level PowerShell session and runs in two modes.
* Executed by the instance of PowerShell that it will register
### Executed by the instance of PowerShell that it will register
``` powershell
Install-PowerShellRemoting.ps1
```
* Executed by another instance of PowerShell on behalf of the instance that it will register.
```
### Executed by another instance of PowerShell on behalf of the instance that it will register
``` powershell
<path to powershell>\Install-PowerShellRemoting.ps1 -PowerShellHome "<absolute path to the instance's $PSHOME>" -PowerShellVersion "<the powershell version tag>"
```
@ -53,6 +94,7 @@ For Example:
``` powershell
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"
```
**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.
## How to Connect to the New Endpoint