Сведения об окружении:
- x64 Win7 SP1 Enterprise
- Windows PowerShell v5.0
Без загруженных профилей, мой локальный powershell сеансы возвращаются
Недостаточно памяти.
, когда я пытаюсь выполнить help
или man
.Это происходит независимо от того, использую ли я собственный powershell.exe
или conemu .
Странно, я могу выполнить любые другие псевдонимы, которые я пробовал, и это не добавляет кПеременная $Error
, поэтому я не знаю, с чего начать устранение неполадок (я пробовал -ErrorAction Stop
и $ErrorActionPreference = 'Stop'
).
В качестве сноски у меня нет повышенных привилегий.
После некоторого исследования я обнаружил, что man
на самом деле является псевдонимом для help
, который не является псевдонимом для Get-Help
, но является отдельной функцией с таким определением:
function help {
<#
.FORWARDHELPTARGETNAME Get-Help
.FORWARDHELPCATEGORY Cmdlet
#>
[CmdletBinding(DefaultParameterSetName = 'AllUsersView', HelpUri = 'http://go.microsoft.com/fwlink/?LinkID=113316')]
param(
[Parameter(Position = 0, ValueFromPipelineByPropertyName = $true)]
[string]
${Name},
[string]
${Path},
[ValidateSet('Alias', 'Cmdlet', 'Provider', 'General', 'FAQ', 'Glossary', 'HelpFile', 'ScriptCommand', 'Function', 'Filter', 'ExternalScript', 'All', 'DefaultHelp', 'Workflow', 'DscResource', 'Class', 'Configuration')]
[string[]]
${Category},
[string[]]
${Component},
[string[]]
${Functionality},
[string[]]
${Role},
[Parameter(ParameterSetName = 'DetailedView', Mandatory = $true)]
[switch]
${Detailed},
[Parameter(ParameterSetName = 'AllUsersView')]
[switch]
${Full},
[Parameter(ParameterSetName = 'Examples', Mandatory = $true)]
[switch]
${Examples},
[Parameter(ParameterSetName = 'Parameters', Mandatory = $true)]
[string]
${Parameter},
[Parameter(ParameterSetName = 'Online', Mandatory = $true)]
[switch]
${Online},
[Parameter(ParameterSetName = 'ShowWindow', Mandatory = $true)]
[switch]
${ShowWindow}
)
#Set the outputencoding to Console::OutputEncoding. More.com doesn't work well with Unicode.
$outputEncoding = [System.Console]::OutputEncoding
Get-Help @PSBoundParameters | more
}
Еще дальше ... more
- это еще одна функция:
function more {
param([string[]]$paths)
$OutputEncoding = [System.Console]::OutputEncoding
if($paths) {
foreach ($file in $paths) {
Get-Content $file | more.com
}
}
else {
$input | more.com
}
}