mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Fix implicit remoting proxy cmdlets to act on common parameters (#20367)
This commit is contained in:
+12
-2
@@ -1300,13 +1300,23 @@ namespace Microsoft.PowerShell.Commands
|
||||
parameterType);
|
||||
}
|
||||
|
||||
private static bool IsProxyForCmdlet(Dictionary<string, ParameterMetadata> parameters)
|
||||
private bool IsProxyForCmdlet(Dictionary<string, ParameterMetadata> parameters)
|
||||
{
|
||||
// we are not sending CmdletBinding/DefaultParameterSet over the wire anymore
|
||||
// we need to infer IsProxyForCmdlet from presence of all common parameters
|
||||
|
||||
foreach (string commonParameterName in Cmdlet.CommonParameters)
|
||||
// need to exclude `ProgressAction` which may not exist for downlevel platforms
|
||||
bool isDownLevelRemote = Session.Runspace is RemoteRunspace remoteRunspace
|
||||
&& remoteRunspace.ServerVersion is not null
|
||||
&& remoteRunspace.ServerVersion <= new Version(7, 3);
|
||||
|
||||
foreach (string commonParameterName in CommonParameters)
|
||||
{
|
||||
if (isDownLevelRemote && commonParameterName == "ProgressAction")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!parameters.ContainsKey(commonParameterName))
|
||||
{
|
||||
return false;
|
||||
|
||||
+11
@@ -1532,4 +1532,15 @@ Describe "WinCompat importing should check availablity of built-in modules" -Tag
|
||||
$result[4] | Should -BeExactly 'ConvertFrom-String'
|
||||
$result[5] | Should -BeExactly 'CFS'
|
||||
}
|
||||
|
||||
It 'ErrorAction should be used for cmdlet' {
|
||||
try {
|
||||
$out = Invoke-Expression 'get-AppLockerFileInformation NoSuch.exe -ErrorAction Stop; "after"'
|
||||
}
|
||||
catch {
|
||||
# do nothing as we expect an error, but execution should not continue
|
||||
}
|
||||
|
||||
$out | Should -Not -Contain 'after'
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user