Rename powershell.exe to pwsh.exe (#5101)

- Rename powershell.exe to pwsh.exe
- Fixe appveyor.psm1
- Update MSI to include 'pwsh' in path and app paths
- Revert change for hyper-v powershell direct
- Update names in packaging.psm1.
- Fix check for SxS
This commit is contained in:
Steve Lee 2017-10-17 17:25:11 -07:00 committed by Dongbo Wang
parent 17731cf6e9
commit 2cc091115b
51 changed files with 146 additions and 146 deletions

View File

@ -147,6 +147,7 @@ psobjects
psproxyjobs
PSReadline
PSSessionConfiguration
pwsh
redistributables
Register-EngineEvent
Register-PSSessionConfiguration

View File

@ -31,7 +31,7 @@
<WixVariable Id="WixUIInfoIco" Value="assets\WixUIInfoIco.bmp" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Open $(env.ProductName)" />
<!-- Default value of Checkbox of starting PowerShell after installation -->
<Property Id="WixShellExecTarget" Value="[$(var.ProductVersionWithName)]PowerShell.exe"/>
<Property Id="WixShellExecTarget" Value="[$(var.ProductVersionWithName)]pwsh.exe"/>
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<UI>
<Dialog Id="MyExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">
@ -73,6 +73,8 @@
<ComponentGroupRef Id="$(var.ProductVersionWithName)"/>
<ComponentRef Id="ProductVersionFolder"/>
<ComponentRef Id="ApplicationProgramsMenuShortcut"/>
<ComponentRef Id="RegistryEntries"/>
<ComponentRef Id="SetPath"/>
</Feature>
<!-- We need to show EULA, and provide option to customize download location -->
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
@ -103,13 +105,23 @@
<Component Id="ProductVersionFolder" Guid="{e1a7f05e-0cd6-4227-80a8-e4fb311f045c}">
<CreateFolder/>
</Component>
<!-- register ourselves in application registry so can be started using just Win+R `pwsh.exe` -->
<Component Id="RegistryEntries" Guid="{402e52f7-baf8-489d-af21-f756a6ca3530}">
<RegistryKey Root="HKCU" Key="Software\Microsoft\Windows\CurrentVersion\App Paths\pwsh.exe" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Value="[$(var.ProductVersionWithName)]pwsh.exe"/>
</RegistryKey>
</Component>
<!-- add ourselvs to %PATH% so pwsh.exe can be started from Windows PowerShell or cmd.exe -->
<Component Id="SetPath" Guid="{9dbb7763-7baf-48e7-b025-3bdedcb0632f}">
<Environment Id="PATH" Action="set" Name="PATH" Part="last" Permanent="no" System="yes" Value="[$(var.ProductVersionWithName)]"/>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="$(var.ProductSemanticVersionWithName)">
<Component Id="ApplicationProgramsMenuShortcut" Guid="{A77507A7-F970-4618-AC30-20AFE36EE2EB}">
<Shortcut Id="PowerShell_ProgramsMenuShortcut" Name="$(var.ProductSemanticVersionWithName)" Description="$(var.ProductSemanticVersionWithName)" Target="[$(var.ProductVersionWithName)]PowerShell.exe" WorkingDirectory="$(var.ProductVersionWithName)"
<Shortcut Id="PowerShell_ProgramsMenuShortcut" Name="$(var.ProductSemanticVersionWithName)" Description="$(var.ProductSemanticVersionWithName)" Target="[$(var.ProductVersionWithName)]pwsh.exe" WorkingDirectory="$(var.ProductVersionWithName)"
Icon = "PowerShellExe.ico" />
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\$(var.ProductSemanticVersionWithName)\ProgramsMenuShortcut" Name="installed" Type="integer" Value="1" KeyPath="yes"/>

View File

@ -187,7 +187,7 @@ function Start-BuildNativeWindowsBinaries {
return
}
# cmake is needed to build powershell.exe
# cmake is needed to build pwsh.exe
if (-not (precheck 'cmake' $null)) {
throw 'cmake not found. Run "Start-PSBootstrap -BuildWindowsNative". You can also install it from https://chocolatey.org/packages/cmake'
}
@ -497,7 +497,7 @@ Fix steps:
Start-TypeGen
}
# Get the folder path where powershell.exe is located.
# Get the folder path where pwsh.exe is located.
$publishPath = Split-Path $Options.Output -Parent
try {
# Relative paths do not work well if cwd is not changed to project
@ -507,7 +507,7 @@ Fix steps:
if ($CrossGen) {
Start-CrossGen -PublishPath $publishPath -Runtime $script:Options.Runtime
log "PowerShell.exe with ngen binaries is available at: $($Options.Output)"
log "pwsh.exe with ngen binaries is available at: $($Options.Output)"
} else {
log "PowerShell output: $($Options.Output)"
}
@ -680,9 +680,9 @@ function New-PSOptions {
}
$Executable = if ($Environment.IsLinux -or $Environment.IsMacOS) {
"powershell"
"pwsh"
} elseif ($Environment.IsWindows) {
"powershell.exe"
"pwsh.exe"
}
# Build the Output path
@ -837,7 +837,7 @@ function Start-PSPester {
[string[]]$Path = @("$PSScriptRoot/test/common","$PSScriptRoot/test/powershell"),
[switch]$ThrowOnFailure,
[string]$binDir = (Split-Path (New-PSOptions).Output),
[string]$powershell = (Join-Path $binDir 'powershell'),
[string]$powershell = (Join-Path $binDir 'pwsh'),
[string]$Pester = ([IO.Path]::Combine($binDir, "Modules", "Pester")),
[Parameter(ParameterSetName='Unelevate',Mandatory=$true)]
[switch]$Unelevate,

View File

@ -72,7 +72,7 @@ cp shared/Microsoft.NetCore.App/2.1.0-preview1-25719-04/* ~/powershell
## Start PowerShell
```bash
~/powershell/powershell
~/powershell/pwsh
```
Note that until arm32 is [fully supported by CoreCLR](https://github.com/dotnet/coreclr/issues/3977), it's not supported by PowerShell Core.

View File

@ -46,9 +46,9 @@ In addition you will need to enable password authentication and optionally key b
```none
PasswordAuthentication yes
```
- Add a PowerShell subsystem entry, replace `c:/program files/powershell/6.0.0/powershell.exe` with the correct path to the version you want to use
- Add a PowerShell subsystem entry, replace `c:/program files/powershell/6.0.0/pwsh.exe` with the correct path to the version you want to use
```none
Subsystem powershell c:/program files/powershell/6.0.0/powershell.exe -sshs -NoLogo -NoProfile
Subsystem powershell c:/program files/powershell/6.0.0/pwsh.exe -sshs -NoLogo -NoProfile
```
- Optionally enable key authentication
```none
@ -173,7 +173,7 @@ Microsoft Windows [Version 10.0.10586]
#
# Windows to Windows
#
C:\Users\PSUser\Documents>"C:\Program Files\PowerShell\6.0.0.17\powershell.exe"
C:\Users\PSUser\Documents>pwsh.exe
PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

View File

@ -86,7 +86,7 @@ namespace Microsoft.PowerShell
/// </param>
/// <param name = "args">
///
/// Command line parameters to powershell.exe
/// Command line parameters to pwsh.exe
///
/// </param>
/// <returns>

View File

@ -25,7 +25,7 @@ namespace Microsoft.PowerShell
{
/// <summary>
///
/// implementation of RawConsole for powershell.exe
/// implementation of RawConsole for powershell
///
/// </summary>

View File

@ -24,7 +24,7 @@ namespace Microsoft.PowerShell
/// <summary>
///
/// ConsoleHostUserInterface implements console-mode user interface for powershell.exe
/// ConsoleHostUserInterface implements console-mode user interface for powershell
///
/// </summary>
[SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")]

View File

@ -13,7 +13,7 @@ namespace Microsoft.PowerShell
{
/// <summary>
///
/// ConsoleHostUserInterface implements console-mode user interface for powershell.exe
/// ConsoleHostUserInterface implements console-mode user interface for powershell
///
/// </summary>
internal partial

View File

@ -42,7 +42,7 @@ namespace Microsoft.PowerShell.ScheduledJob
private bool _isDisposed;
// Task Action strings.
private const string TaskExecutionPath = @"powershell.exe";
private const string TaskExecutionPath = @"pwsh.exe";
private const string TaskArguments = @"-NoLogo -NonInteractive -WindowStyle Hidden -Command ""Import-Module PSScheduledJob; $jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition]::LoadFromStore('{0}', '{1}'); $jobDef.Run()""";
private static object LockObject = new object();
private static int CurrentId = 0;

View File

@ -503,7 +503,7 @@ namespace System.Management.Automation
/// </summary>
/// <remarks>
/// This method is to be used by native host whose TPA list doesn't include PS assemblies, such as the
/// in-box Nano powershell.exe, the PS remote WinRM plugin, in-box Nano DSC and in-box Nano SCOM agent.
/// in-box Nano powershell, the PS remote WinRM plugin, in-box Nano DSC and in-box Nano SCOM agent.
/// </remarks>
/// <param name="basePaths">
/// Base directory paths that are separated by semicolon ';'.

View File

@ -39,7 +39,7 @@ namespace Microsoft.PowerShell.Commands
/// <summary>
/// implementation for the out-default command
/// this command it implicitly inject by the
/// powershell.exe host at the end of the pipeline as the
/// powershell host at the end of the pipeline as the
/// default sink (display to console screen)
/// </summary>
[Cmdlet(VerbsData.Out, "Default", HelpUri = "https://go.microsoft.com/fwlink/?LinkID=113362", RemotingCapability = RemotingCapability.None)]

View File

@ -768,10 +768,15 @@ namespace System.Management.Automation
private static string RemoveSxSPsHomeModulePath(string currentProcessModulePath, string personalModulePath, string sharedModulePath, string psHomeModulePath)
{
#if UNIX
const string powershellExeName = "powershell";
const string powershellExeName = "pwsh";
const string oldPowershellExeName = "powershell";
#else
const string powershellExeName = "powershell.exe";
const string powershellExeName = "pwsh.exe";
const string oldPowershellExeName = "powershell.exe";
#endif
const string powershellDepsName = "pwsh.deps.json";
const string oldPowershellDepsName = "powershell.deps.json";
StringBuilder modulePathString = new StringBuilder(currentProcessModulePath.Length);
char[] invalidPathChars = Path.GetInvalidPathChars();
@ -791,8 +796,10 @@ namespace System.Management.Automation
{
string parentDir = Path.GetDirectoryName(trimedPath);
string psExePath = Path.Combine(parentDir, powershellExeName);
string psDepsPath = Path.Combine(parentDir, "powershell.deps.json");
if (File.Exists(psExePath) && File.Exists(psDepsPath))
string oldExePath = Path.Combine(parentDir, oldPowershellExeName);
string psDepsPath = Path.Combine(parentDir, powershellDepsName);
string oldDepsPath = Path.Combine(parentDir, oldPowershellDepsName);
if ((File.Exists(psExePath) && File.Exists(psDepsPath)) || (File.Exists(oldExePath) && File.Exists(oldDepsPath)))
{
// Path is a PSHome module path from a different powershell core instance. Ignore it.
continue;

View File

@ -43,7 +43,7 @@ namespace System.Management.Automation.Host
public abstract class PSHost
{
/// <summary>
/// The powershell.exe spec states that 128 is the maximum nesting depth.
/// The powershell spec states that 128 is the maximum nesting depth.
/// </summary>
internal const int MaximumNestedPromptLevel = 128;
internal static bool IsStdOutputRedirected;

View File

@ -38,10 +38,10 @@ namespace System.Management.Automation.Runspaces
{
#if UNIX
s_PSExePath = Path.Combine(Utils.DefaultPowerShellAppBase,
"powershell");
"pwsh");
#else
s_PSExePath = Path.Combine(Utils.DefaultPowerShellAppBase,
"powershell.exe");
"pwsh.exe");
#endif
}
@ -79,7 +79,7 @@ namespace System.Management.Automation.Runspaces
#if CORECLR
string processArguments = " -s -NoLogo -NoProfile";
#else
// Adding Version parameter to powershell.exe
// Adding Version parameter to powershell
// Version parameter needs to go before all other parameters because the native layer looks for Version or
// PSConsoleFile parameters before parsing other parameters.
// The other parameters get parsed in the managed layer.

View File

@ -2033,11 +2033,11 @@ namespace System.Management.Automation.Runspaces
}
#endif
// Create client ssh process that hosts powershell.exe as a subsystem and is configured
// Create client ssh process that hosts powershell as a subsystem and is configured
// to be in server mode for PSRP over SSHD:
// powershell -Version 5.1 -sshs -NoLogo -NoProfile
// powershell -sshs -NoLogo -NoProfile
// See sshd_configuration file, subsystems section and it will have this entry:
// Subsystem powershell C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 5.1 -sshs -NoLogo -NoProfile
// Subsystem powershell C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -sshs -NoLogo -NoProfile
string arguments;
if (!string.IsNullOrEmpty(this.KeyFilePath))
{
@ -3164,6 +3164,8 @@ namespace System.Management.Automation.Runspaces
//
// Hyper-V container (i.e., RuntimeId is not empty) uses Hyper-V socket transport.
// Windows Server container (i.e., RuntimeId is empty) uses named pipe transport for now.
// This code executes `powershell.exe` as it exists in the container which currently is
// expected to be Windows PowerShell as it's inbox in the container.
//
cmd = string.Format(System.Globalization.CultureInfo.InvariantCulture,
@"{{""CommandLine"": ""powershell.exe {0} -NoLogo {1}"",""RestrictedToken"": {2}}}",

View File

@ -948,7 +948,7 @@ namespace System.Management.Automation.Remoting.Client
#region Overrides
/// <summary>
/// Launch a new Process (PowerShell.exe -s) to perform remoting. This is used by *-Job cmdlets
/// Launch a new Process (pwsh -s) to perform remoting. This is used by *-Job cmdlets
/// to support background jobs without depending on WinRM (WinRM has complex requirements like
/// elevation to support local machine remoting)
/// </summary>

View File

@ -116,7 +116,7 @@ if (! ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity
if ($PsCmdlet.ParameterSetName -eq "ByPath")
{
$targetPsHome = $PowerShellHome
$targetPsVersion = & "$targetPsHome\powershell" -NoProfile -Command '$PSVersionTable.PSVersion.ToString()'
$targetPsVersion = & "$targetPsHome\pwsh" -NoProfile -Command '$PSVersionTable.PSVersion.ToString()'
}
else
{

View File

@ -4,7 +4,7 @@
<PropertyGroup>
<Description>PowerShell top-level project with .NET CLI host</Description>
<AssemblyName>powershell</AssemblyName>
<AssemblyName>pwsh</AssemblyName>
<OutputType>Exe</OutputType>
<RuntimeIdentifiers>linux-x64;osx.10.12-x64;</RuntimeIdentifiers>
</PropertyGroup>

View File

@ -2,7 +2,7 @@
<Import Project="..\..\PowerShell.Common.props" />
<PropertyGroup>
<Description>PowerShell Core on Windows top-level project</Description>
<AssemblyName>powershell</AssemblyName>
<AssemblyName>pwsh</AssemblyName>
<OutputType>Exe</OutputType>
<RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers>
<RootNamespace>Microsoft.PowerShell</RootNamespace>

View File

@ -20,7 +20,7 @@ Describe "Basic remoting test with docker" -tags @("Scenario","Slow"){
# get fullpath to installed core powershell
Write-Verbose -verbose "Getting path to PowerShell core"
$powershellcorepath = docker exec $server powershell -c "(get-childitem 'c:\program files\powershell\*\powershell.exe').fullname"
$powershellcorepath = docker exec $server powershell -c "(get-childitem 'c:\program files\powershell\*\pwsh.exe').fullname"
if ( ! $powershellcorepath )
{
$pending = $true

View File

@ -1,7 +1,7 @@
# escape=`
FROM microsoft/windowsservercore
SHELL ["powershell.exe","-command"]
SHELL ["pwsh.exe","-command"]
# the source msi should change on a daily basis
# the destination should not change
@ -18,7 +18,7 @@ RUN new-LocalUser -Name testuser -password (ConvertTo-SecureString 11aa!!AA -asp
set-item WSMan:/localhost/client/AllowUnencrypted $true; `
Start-Process -FilePath msiexec.exe -ArgumentList '-qn', `
'-i c:\PSCore.msi','-log c:\PSCore-install.log','-norestart' -wait ; `
$psexec = get-item -path ${ENV:ProgramFiles}/powershell/*/powershell.exe; `
$psexec = get-item -path ${ENV:ProgramFiles}/powershell/*/pwsh.exe; `
$corehome = $psexec.directory.fullname; `
& $psexec Install-PowerShellRemoting.ps1; `
remove-item -force c:\PSCore.msi

View File

@ -1,7 +1,7 @@
Describe "Configuration file locations" -tags "CI","Slow" {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
$profileName = "Microsoft.PowerShell_profile.ps1"
}

View File

@ -9,7 +9,7 @@ using namespace System.Diagnostics
Describe 'minishell for native executables' -Tag 'CI' {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
}
Context 'Streams from minishell' {
@ -51,7 +51,7 @@ Describe 'minishell for native executables' -Tag 'CI' {
Describe "ConsoleHost unit tests" -tags "Feature" {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
$ExitCodeBadCommandLineParameter = 64
function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
@ -152,7 +152,7 @@ Describe "ConsoleHost unit tests" -tags "Feature" {
}
foreach ($x in "--help", "-help", "-h", "-?", "--he", "-hel", "--HELP", "-hEl") {
It "Accepts '$x' as a parameter for help" {
& $powershell -noprofile $x | Where-Object { $_ -match "PowerShell[.exe] -Help | -? | /?" } | Should Not BeNullOrEmpty
& $powershell -noprofile $x | Where-Object { $_ -match "pwsh[.exe] -Help | -? | /?" } | Should Not BeNullOrEmpty
}
}
@ -170,7 +170,7 @@ Describe "ConsoleHost unit tests" -tags "Feature" {
@{value = "2"},
@{value = "-command 1-1"}
) {
$currentVersion = "powershell " + $PSVersionTable.GitCommitId.ToString()
$currentVersion = "PowerShell " + $PSVersionTable.GitCommitId.ToString()
$observed = & $powershell -version $value 2>&1
$observed | should be $currentVersion
$LASTEXITCODE | Should Be 0
@ -487,8 +487,8 @@ foo
}
Context "PATH environment variable" {
It "`$PSHOME should be in front so that powershell.exe starts current running PowerShell" {
powershell -v | Should Match $psversiontable.GitCommitId
It "`$PSHOME should be in front so that pwsh.exe starts current running PowerShell" {
pwsh -v | Should Match $psversiontable.GitCommitId
}
It "powershell starts if PATH is not set" -Skip:($IsWindows) {
@ -568,7 +568,7 @@ public enum ShowWindowCommands : int
@{WindowStyle="Maximized"} # hidden doesn't work in CI/Server Core
) {
param ($WindowStyle)
$ps = Start-Process powershell -ArgumentList "-WindowStyle $WindowStyle -noexit -interactive" -PassThru
$ps = Start-Process pwsh -ArgumentList "-WindowStyle $WindowStyle -noexit -interactive" -PassThru
$startTime = Get-Date
$showCmd = "Unknown"
while (((Get-Date) - $startTime).TotalSeconds -lt 10 -and $showCmd -ne $WindowStyle)
@ -581,7 +581,7 @@ public enum ShowWindowCommands : int
}
It "Invalid -WindowStyle returns error" {
powershell -WindowStyle invalid
pwsh -WindowStyle invalid
$LASTEXITCODE | Should Be $ExitCodeBadCommandLineParameter
}
}

View File

@ -1,7 +1,7 @@
Describe "Read-Host" -Tags "Slow","Feature" {
Context "[Console]::ReadKey() implementation on non-Windows" {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
$assetsDir = Join-Path -Path $PSScriptRoot -ChildPath assets
if ($IsWindows) {
$ItArgs = @{ skip = $true }

View File

@ -355,7 +355,7 @@ Describe "TabCompletion" -Tags CI {
@{ inputStr = '$host.UI.WriteD'; expected = 'WriteDebugLine('; setup = $null }
@{ inputStr = '$MaximumHistoryCount.'; expected = 'CompareTo('; setup = $null }
@{ inputStr = '$A=[datetime]::now;$A.'; expected = 'Date'; setup = $null }
@{ inputStr = '$x= gps powershell;$x.*pm'; expected = 'NPM'; setup = $null }
@{ inputStr = '$x= gps pwsh;$x.*pm'; expected = 'NPM'; setup = $null }
@{ inputStr = 'function write-output {param($abcd) $abcd};Write-Output -a'; expected = '-abcd'; setup = $null }
@{ inputStr = 'function write-output {param($abcd) $abcd};Microsoft.PowerShell.Utility\Write-Output -'; expected = '-InputObject'; setup = $null }
@{ inputStr = '[math]::Co'; expected = 'Cos('; setup = $null }
@ -418,7 +418,7 @@ Describe "TabCompletion" -Tags CI {
@{ inputStr = 'gmo -list PackageM'; expected = 'PackageManagement'; setup = $null }
@{ inputStr = 'gcm -Module PackageManagement Find-Pac'; expected = 'Find-Package'; setup = $null }
@{ inputStr = 'ipmo PackageM'; expected = 'PackageManagement'; setup = $null }
@{ inputStr = 'Get-Process powersh'; expected = 'powershell'; setup = $null }
@{ inputStr = 'Get-Process pws'; expected = 'pwsh'; setup = $null }
@{ inputStr = "function bar { [OutputType('System.IO.FileInfo')][OutputType('System.Diagnostics.Process')]param() }; bar | ? { `$_.ProcessN"; expected = 'ProcessName'; setup = $null }
@{ inputStr = "function bar { [OutputType('System.IO.FileInfo')][OutputType('System.Diagnostics.Process')]param() }; bar | ? { `$_.LastAc"; expected = 'LastAccessTime'; setup = $null }
@{ inputStr = "& 'get-comm"; expected = "'Get-Command'"; setup = $null }

View File

@ -114,7 +114,7 @@ namespace TestTypeResolution {
Add-Type $cmdletCode -OutputAssembly $cmdletDllPath
Add-Type $dupTypeCode -OutputAssembly $dupTypeDllPath
$powershell = Join-Path $PSHOME "powershell"
$powershell = Join-Path $PSHOME "pwsh"
}
It "validate Type resolution should prefer the assembly loaded by Import-Module" {

View File

@ -79,26 +79,26 @@ public class ABC {}
}
#>
It "Assembly loaded at runtime" -pending {
$assemblies = powershell -noprofile -command @"
$assemblies = pwsh -noprofile -command @"
using assembly .\UsingAssemblyTest$guid.dll
[Appdomain]::CurrentDomain.GetAssemblies().GetName().Name
"@
$assemblies -contains "UsingAssemblyTest$guid" | Should Be $true
$assemblies = powershell -noprofile -command @"
$assemblies = pwsh -noprofile -command @"
using assembly $PSScriptRoot\UsingAssemblyTest$guid.dll
[Appdomain]::CurrentDomain.GetAssemblies().GetName().Name
"@
$assemblies -contains "UsingAssemblyTest$guid" | Should Be $true
$assemblies = powershell -noprofile -command @"
$assemblies = pwsh -noprofile -command @"
using assembly System.Drawing
[Appdomain]::CurrentDomain.GetAssemblies().GetName().Name
"@
$assemblies -contains "System.Drawing" | Should Be $true
$assemblies = powershell -noprofile -command @"
$assemblies = pwsh -noprofile -command @"
using assembly 'System.Drawing, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
[Appdomain]::CurrentDomain.GetAssemblies().GetName().Name
"@

View File

@ -1,7 +1,7 @@
Describe 'native commands with pipeline' -tags 'Feature' {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
}
It "native | ps | native doesn't block" {
@ -30,8 +30,8 @@ Describe 'native commands with pipeline' -tags 'Feature' {
$result = @(ping.exe | findstr.exe count | findstr.exe ping)
$result[0] | Should Match "Usage: ping"
} else {
$result = @(ps aux | grep powershell | grep -v grep)
$result[0] | Should Match "powershell"
$result = @(ps aux | grep pwsh | grep -v grep)
$result[0] | Should Match "pwsh"
}
}
}

View File

@ -1,5 +1,5 @@
Describe "Native streams behavior with PowerShell" -Tags 'CI' {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
Context "Error stream" {
# we are using powershell itself as an example of a native program.

View File

@ -115,7 +115,7 @@ namespace ModuleCmdlets
"@
Add-Type -TypeDefinition $src -OutputAssembly $TESTDRIVE\System.dll
$results = powershell -noprofile -c "`$module = Import-Module $TESTDRIVE\System.dll -Passthru; `$module.ImplementingAssembly.Location; Test-BinaryModuleCmdlet1"
$results = pwsh -noprofile -c "`$module = Import-Module $TESTDRIVE\System.dll -Passthru; `$module.ImplementingAssembly.Location; Test-BinaryModuleCmdlet1"
#Ignore slash format difference under windows/Unix
$path = (Get-ChildItem $TESTDRIVE\System.dll).FullName

View File

@ -3,7 +3,7 @@ Describe "Out-Default Tests" -tag CI {
# due to https://github.com/PowerShell/PowerShell/issues/3405, `Out-Default -Transcript` emits output to pipeline
# as running in Pester effectively wraps everything in parenthesis, workaround is to use another powershell
# to run the test script passed as a string
$powershell = "$PSHOME/powershell"
$powershell = "$PSHOME/pwsh"
}
It "'Out-Default -Transcript' shows up in transcript, but not host" {

View File

@ -240,7 +240,7 @@ Describe "Basic FileSystem Provider Tests" -Tags "CI" {
Context "Validate behavior when access is denied" {
BeforeAll {
$powershell = Join-Path $PSHOME "powershell"
$powershell = Join-Path $PSHOME "pwsh"
if ($IsWindows)
{
$protectedPath = Join-Path ([environment]::GetFolderPath("windows")) "appcompat" "Programs"

View File

@ -126,7 +126,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
$creds = [pscredential]::new(".\$startUsername", $password)
$parameters = @{
Name = $servicename;
BinaryPathName = "$PSHOME\powershell.exe";
BinaryPathName = "$PSHOME\pwsh.exe";
StartupType = "Manual";
Credential = $creds
}
@ -156,7 +156,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
try {
$parameters = @{
Name = $name;
BinaryPathName = "$PSHOME\powershell.exe";
BinaryPathName = "$PSHOME\pwsh.exe";
StartupType = $startupType;
}
if ($description) {
@ -200,7 +200,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
$servicename = "testremoveservice"
$parameters = @{
Name = $servicename;
BinaryPathName = "$PSHOME\powershell.exe"
BinaryPathName = "$PSHOME\pwsh.exe"
}
$service = New-Service @parameters
$service | Should Not BeNullOrEmpty
@ -218,7 +218,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
$servicename = "testremoveservice"
$parameters = @{
Name = $servicename;
BinaryPathName = "$PSHOME\powershell.exe"
BinaryPathName = "$PSHOME\pwsh.exe"
}
$service = New-Service @parameters
$service | Should Not BeNullOrEmpty
@ -241,7 +241,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
$newdisplayname = "newdisplayname"
$parameters = @{
Name = $servicename;
BinaryPathName = "$PSHOME\powershell.exe"
BinaryPathName = "$PSHOME\pwsh.exe"
}
$service = New-Service @parameters
$service | Should Not BeNullOrEmpty
@ -260,7 +260,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
$newdisplayname = "newdisplayname"
$parameters = @{
Name = $servicename;
BinaryPathName = "$PSHOME\powershell.exe"
BinaryPathName = "$PSHOME\pwsh.exe"
}
$service = New-Service @parameters
$service | Should Not BeNullOrEmpty
@ -290,7 +290,7 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW
param($cmdlet, $name, $parameter, $value, $errorid)
$parameters = @{$parameter = $value; Name = $name; ErrorAction = "Stop"}
if ($cmdlet -eq "New-Service") {
$parameters += @{Binary = "$PSHOME\powershell.exe"};
$parameters += @{Binary = "$PSHOME\pwsh.exe"};
}
{ & $cmdlet @parameters } | ShouldBeErrorId $errorid
}

View File

@ -2,7 +2,7 @@ using namespace System.Diagnostics
Describe "Invoke-Item basic tests" -Tags "Feature" {
BeforeAll {
$powershell = Join-Path $PSHOME -ChildPath powershell
$powershell = Join-Path $PSHOME -ChildPath pwsh
$testFile1 = Join-Path -Path $TestDrive -ChildPath "text1.txt"
New-Item -Path $testFile1 -ItemType File -Force > $null

View File

@ -1,4 +1,4 @@
$ps = Join-Path -Path $PsHome -ChildPath "powershell"
$ps = Join-Path -Path $PsHome -ChildPath "pwsh"
Describe "Set-PSBreakpoint DRT Unit Tests" -Tags "CI" {
#Set up

View File

@ -1,7 +1,7 @@
Describe "Write-Host with default Console Host" -Tags "Slow","Feature" {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
$testData = @(
@{ Name = '-Separator'; Command = "Write-Host a,b,c -Separator '+'"; returnCount = 1; returnValue = @("a+b+c") }

View File

@ -102,9 +102,9 @@ Describe "XmlCommand DRT basic functionality Tests" -Tags "CI" {
$deserialized_one.two.three.num | Should BeNullOrEmpty
}
It "Import-Clixml should work with XML serialization from powershell.exe" {
It "Import-Clixml should work with XML serialization from pwsh.exe" {
# need to create separate process so that current powershell doesn't interpret clixml output
Start-Process -FilePath $pshome\powershell -RedirectStandardOutput $testfile -Args "-noprofile -nologo -outputformat xml -command get-command import-clixml" -Wait
Start-Process -FilePath $pshome\pwsh -RedirectStandardOutput $testfile -Args "-noprofile -nologo -outputformat xml -command get-command import-clixml" -Wait
$out = Import-Clixml -Path $testfile
$out.Name | Should Be "Import-CliXml"
$out.CommandType.ToString() | Should Be "Cmdlet"

View File

@ -37,7 +37,7 @@
Context "Export-CliXml" {
BeforeAll {
$gpsList = Get-Process powershell
$gpsList = Get-Process pwsh
$gps = $gpsList | Select-Object -First 1
$filePath = Join-Path $subFilePath 'gps.xml'

View File

@ -2,7 +2,7 @@
Context "Group-Object" {
It "AsHashtable returns a hashtable" {
$result = Get-Process | Group-Object -Property ProcessName -AsHashTable
$result["powershell"].Count | Should BeGreaterThan 0
$result["pwsh"].Count | Should BeGreaterThan 0
}
It "AsString returns a string" {

View File

@ -1,7 +1,7 @@
Describe "CredSSP cmdlet tests" -Tags 'Feature','RequireAdminOnWindows' {
BeforeAll {
$powershell = Join-Path $PSHOME "powershell"
$powershell = Join-Path $PSHOME "pwsh"
$notEnglish = $false
$IsToBeSkipped = !$IsWindows;

View File

@ -7,7 +7,7 @@ $script:TestSourceRoot = $PSScriptRoot
Describe "Test suite for validating automounted PowerShell drives" -Tags @('Feature', 'Slow', 'RequireAdminOnWindows') {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
$AutomountVHDDriveScriptPath = Join-Path $script:TestSourceRoot 'AutomountVHDDrive.ps1'
$vhdPath = Join-Path $TestDrive 'TestAutomountVHD.vhd'

View File

@ -23,7 +23,7 @@ one on the path.
Example:
```powershell
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
& $powershell -noprofile -command "ExampleCommand" | Should Be "ExampleOutput"
```

View File

@ -4,7 +4,7 @@ using namespace System.Management.Automation.Internal
Describe "PowerShell Command Debugging" -tags "CI" {
BeforeAll {
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
$powershell = Join-Path -Path $PsHome -ChildPath "pwsh"
}
function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)

View File

@ -69,7 +69,7 @@ Describe 'Basic Job Tests' -Tags 'CI' {
It "Create job with native command" {
try {
$nativeJob = Start-job { powershell -c 1+1 }
$nativeJob = Start-job { pwsh -c 1+1 }
$nativeJob | Wait-Job
$nativeJob.State | Should BeExactly "Completed"
$nativeJob.HasMoreData | Should Be $true

View File

@ -4,7 +4,7 @@ Describe "SxS Module Path Basic Tests" -tags "CI" {
if ($IsWindows)
{
$powershell = "$PSHOME\powershell.exe"
$powershell = "$PSHOME\pwsh.exe"
$ProductName = "WindowsPowerShell"
if ($IsCoreCLR -and ($PSHOME -notlike "*Windows\System32\WindowsPowerShell\v1.0"))
{
@ -15,7 +15,7 @@ Describe "SxS Module Path Basic Tests" -tags "CI" {
}
else
{
$powershell = "$PSHOME/powershell"
$powershell = "$PSHOME/pwsh"
$expectedUserPath = [System.Management.Automation.Platform]::SelectProductNameForDirectory("USER_MODULES")
$expectedSharedPath = [System.Management.Automation.Platform]::SelectProductNameForDirectory("SHARED_MODULES")
}
@ -25,7 +25,7 @@ Describe "SxS Module Path Basic Tests" -tags "CI" {
$fakePSHome = Join-Path -Path $TestDrive -ChildPath 'FakePSHome'
$fakePSHomeModuleDir = Join-Path -Path $fakePSHome -ChildPath 'Modules'
$fakePowerShell = Join-Path -Path $fakePSHome -ChildPath (Split-Path -Path $powershell -Leaf)
$fakePSDepsFile = Join-Path -Path $fakePSHome -ChildPath "powershell.deps.json"
$fakePSDepsFile = Join-Path -Path $fakePSHome -ChildPath "pwsh.deps.json"
New-Item -Path $fakePSHome -ItemType Directory > $null
New-Item -Path $fakePSHomeModuleDir -ItemType Directory > $null
@ -56,7 +56,7 @@ Describe "SxS Module Path Basic Tests" -tags "CI" {
It "ignore pshome module path derived from a different powershell core instance" -Skip:(!$IsCoreCLR) {
## Create 'powershell' and 'powershell.deps.json' in the fake PSHome folder,
## Create 'powershell' and 'pwsh.deps.json' in the fake PSHome folder,
## so that the module path calculation logic would believe it's real.
New-Item -Path $fakePowerShell -ItemType File -Force > $null
New-Item -Path $fakePSDepsFile -ItemType File -Force > $null
@ -75,7 +75,7 @@ Describe "SxS Module Path Basic Tests" -tags "CI" {
} finally {
## Remove 'powershell' and 'powershell.deps.json' from the fake PSHome folder
## Remove 'powershell' and 'pwsh.deps.json' from the fake PSHome folder
Remove-Item -Path $fakePowerShell -Force -ErrorAction SilentlyContinue
Remove-Item -Path $fakePSDepsFile -Force -ErrorAction SilentlyContinue
}

View File

@ -302,7 +302,7 @@
$test2File = Join-Path -Path $tempDir -ChildPath "test2.ps1"
$expected = "[$tempDir]"
$psPath = "$PSHOME\powershell"
$psPath = "$PSHOME\pwsh"
$null = New-Item -Path $tempDir -ItemType Directory -Force
Set-Content -Path $test1File -Value $test1 -Force

View File

@ -238,7 +238,7 @@ try
}
# grab the commitID, we need this to grab the right sources
$gitCommitId = & "$psBinPath\powershell.exe" -noprofile -command { $PSVersiontable.GitCommitId }
$gitCommitId = & "$psBinPath\pwsh.exe" -noprofile -command { $PSVersiontable.GitCommitId }
$commitId = $gitCommitId.substring($gitCommitId.LastIndexOf('-g') + 2)
# download the src directory

View File

@ -611,7 +611,7 @@ function Install-OpenCover
.Synopsis
Invoke-OpenCover runs tests under OpenCover to collect code coverage.
.Description
Invoke-OpenCover runs tests under OpenCover by executing tests on PowerShell.exe located at $PowerShellExeDirectory.
Invoke-OpenCover runs tests under OpenCover by executing tests on PowerShell located at $PowerShellExeDirectory.
.EXAMPLE
Invoke-OpenCover -TestPath $pwd/test/powershell -PowerShellExeDirectory $pwd/src/powershell-win-core/bin/CodeCoverage/netcoreapp1.0/win7-x64
#>
@ -654,8 +654,8 @@ function Invoke-OpenCover
}
}
# check to be sure that powershell.exe is present
$target = "${PowerShellExeDirectory}\powershell.exe"
# check to be sure that pwsh.exe is present
$target = "${PowerShellExeDirectory}\pwsh.exe"
if ( ! (test-path $target) )
{
throw "$target does not exist, use 'Start-PSBuild -configuration CodeCoverage'"
@ -702,12 +702,12 @@ function Invoke-OpenCover
# '&' invoke caused issues with cmdline parameters for opencover.console.exe
$elevatedFile = "$env:temp\elevated.ps1"
"$OpenCoverBin $cmdlineElevated" | Out-File -FilePath $elevatedFile -force
powershell.exe -file $elevatedFile
pwsh.exe -file $elevatedFile
# invoke OpenCover unelevated and poll for completion
$unelevatedFile = "$env:temp\unelevated.ps1"
"$openCoverBin $cmdlineUnelevated" | Out-File -FilePath $unelevatedFile -Force
runas.exe /trustlevel:0x20000 "powershell.exe -file $unelevatedFile"
runas.exe /trustlevel:0x20000 "pwsh.exe -file $unelevatedFile"
# poll for process exit every 60 seconds
# timeout of 6 hours
# Runs currently take about 2.5 - 3 hours, we picked 6 hours to be substantially larger.

View File

@ -323,9 +323,9 @@ function Invoke-AppVeyorTest
Write-Host -Foreground Green 'Run CoreCLR tests'
$testResultsNonAdminFile = "$pwd\TestsResultsNonAdmin.xml"
$testResultsAdminFile = "$pwd\TestsResultsAdmin.xml"
if(!(Test-Path "$env:CoreOutput\powershell.exe"))
if(!(Test-Path "$env:CoreOutput\pwsh.exe"))
{
throw "CoreCLR PowerShell.exe was not built"
throw "CoreCLR pwsh.exe was not built"
}
if(-not (Test-DailyBuild))

View File

@ -437,7 +437,7 @@ function New-UnixPackage {
# Setup staging directory so we don't change the original source directory
$Staging = "$PSScriptRoot/staging"
if ($pscmdlet.ShouldProcess("Create staging folder")) {
New-StagingFolder -StagingPath $Staging -Name $Name
New-StagingFolder -StagingPath $Staging
}
# Follow the Filesystem Hierarchy Standard for Linux and macOS
@ -456,7 +456,7 @@ function New-UnixPackage {
if($pscmdlet.ShouldProcess("Create package file system"))
{
New-Item -Force -ItemType SymbolicLink -Path "/tmp/$Name" -Target "$Destination/$Name" >$null
New-Item -Force -ItemType SymbolicLink -Path "/tmp/pwsh" -Target "$Destination/pwsh" >$null
if ($Environment.IsRedHatFamily) {
# add two symbolic links to system shared libraries that libmi.so is dependent on to handle
@ -468,14 +468,14 @@ function New-UnixPackage {
$AfterInstallScript = [io.path]::GetTempFileName()
$AfterRemoveScript = [io.path]::GetTempFileName()
$packagingStrings.RedHatAfterInstallScript -f "$Link/$Name" | Out-File -FilePath $AfterInstallScript -Encoding ascii
$packagingStrings.RedHatAfterRemoveScript -f "$Link/$Name" | Out-File -FilePath $AfterRemoveScript -Encoding ascii
$packagingStrings.RedHatAfterInstallScript -f "$Link/pwsh" | Out-File -FilePath $AfterInstallScript -Encoding ascii
$packagingStrings.RedHatAfterRemoveScript -f "$Link/pwsh" | Out-File -FilePath $AfterRemoveScript -Encoding ascii
}
elseif ($Environment.IsUbuntu -or $Environment.IsDebian) {
$AfterInstallScript = [io.path]::GetTempFileName()
$AfterRemoveScript = [io.path]::GetTempFileName()
$packagingStrings.UbuntuAfterInstallScript -f "$Link/$Name" | Out-File -FilePath $AfterInstallScript -Encoding ascii
$packagingStrings.UbuntuAfterRemoveScript -f "$Link/$Name" | Out-File -FilePath $AfterRemoveScript -Encoding ascii
$packagingStrings.UbuntuAfterInstallScript -f "$Link/pwsh" | Out-File -FilePath $AfterInstallScript -Encoding ascii
$packagingStrings.UbuntuAfterRemoveScript -f "$Link/pwsh" | Out-File -FilePath $AfterRemoveScript -Encoding ascii
}
@ -483,7 +483,7 @@ function New-UnixPackage {
# if the target of the powershell symlink exists, `fpm` aborts
# with a `utime` error on macOS.
# so we move it to make symlink broken
$symlink_dest = "$Destination/$Name"
$symlink_dest = "$Destination/pwsh"
$hack_dest = "./_fpm_symlink_hack_powershell"
if ($Environment.IsMacOS) {
if (Test-Path $symlink_dest) {
@ -501,10 +501,8 @@ function New-UnixPackage {
Start-NativeExecution { ronn --roff $RonnFile }
# Setup for side-by-side man pages (noop if primary package)
$FixedRoffFile = $RoffFile -replace "powershell.1$", "$Name.1"
if ($Name -ne "powershell") {
Move-Item $RoffFile $FixedRoffFile
}
$FixedRoffFile = $RoffFile -replace "powershell.1$", "pwsh.1"
Move-Item $RoffFile $FixedRoffFile
# gzip in assets directory
$GzipFile = "$FixedRoffFile.gz"
@ -517,7 +515,7 @@ function New-UnixPackage {
find $Staging -type d | xargs chmod 755
find $Staging -type f | xargs chmod 644
chmod 644 $GzipFile
chmod 755 "$Staging/$Name" # only the executable should be executable
chmod 755 "$Staging/pwsh" # only the executable should be executable
}
}
@ -576,15 +574,15 @@ function New-UnixPackage {
$Arguments += @("--depends", $Dependency)
}
if ($AfterInstallScript) {
$Arguments += @("--after-install", $AfterInstallScript)
$Arguments += @("--after-install", $AfterInstallScript)
}
if ($AfterRemoveScript) {
$Arguments += @("--after-remove", $AfterRemoveScript)
$Arguments += @("--after-remove", $AfterRemoveScript)
}
$Arguments += @(
"$Staging/=$Destination/",
"$GzipFile=$ManFile",
"/tmp/$Name=$Link"
"/tmp/pwsh=$Link"
)
# Build package
try {
@ -600,11 +598,12 @@ function New-UnixPackage {
}
}
if ($AfterInstallScript) {
Remove-Item -erroraction 'silentlycontinue' $AfterInstallScript
Remove-Item -erroraction 'silentlycontinue' $AfterInstallScript
}
if ($AfterRemoveScript) {
Remove-Item -erroraction 'silentlycontinue' $AfterRemoveScript
Remove-Item -erroraction 'silentlycontinue' $AfterRemoveScript
}
Remove-Item -Path $GzipFile -Force -ErrorAction SilentlyContinue
}
# Magic to get path output
@ -639,32 +638,11 @@ function New-StagingFolder
param(
[Parameter(Mandatory)]
[string]
$StagingPath,
# Must start with 'powershell' but may have any suffix
[Parameter(Mandatory)]
[ValidatePattern("^powershell")]
[string]
$Name
$StagingPath
)
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $StagingPath
Copy-Item -Recurse $PackageSourcePath $StagingPath
# Rename files to given name if not "powershell"
if ($Name -ne "powershell") {
$Files = @("powershell",
"powershell.dll",
"powershell.deps.json",
"powershell.pdb",
"powershell.runtimeconfig.json",
"powershell.xml")
foreach ($File in $Files) {
$NewName = $File -replace "^powershell", $Name
Move-Item "$StagingPath/$File" "$StagingPath/$NewName"
}
}
}
# Function to create a zip file for Nano Server and xcopy deployment
@ -790,7 +768,7 @@ function New-NugetPackage
$stagingRoot = New-SubFolder -Path $PSScriptRoot -ChildPath 'nugetStaging' -Clean
$contentFolder = Join-Path -path $stagingRoot -ChildPath 'content'
if ($pscmdlet.ShouldProcess("Create staging folder")) {
New-StagingFolder -StagingPath $contentFolder -Name $Name
New-StagingFolder -StagingPath $contentFolder
}
$projectFolder = Join-Path $PSScriptRoot -ChildPath 'project'