Search code examples
powershellwindows-explorer

Powershell Invoke-Item no longer works to open directories in Explorer


I frequently use

ii .

in PowerShell to open the current directory in Windows Explorer. This used to work all the time, but now nothing happens.

The Invoke-Item cmdlet still works. Doing ii somefile.txt opens that file in a text editor. But directories don't work anymore.

In addition start . doesn't work. Using explorer . does work.

Running

Trace-Command -Name ParameterBinding {ii .} -PSHost

returns

DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Invoke-Item]
DEBUG: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Invoke-Item]
DEBUG: ParameterBinding Information: 0 :     BIND arg [.] to parameter [Path]
DEBUG: ParameterBinding Information: 0 :         Binding collection parameter Path: argument type [String], parameter type [System.String[]],
collection type Array, element type [System.String], no coerceElementType
DEBUG: ParameterBinding Information: 0 :         Creating array with element type [System.String] and 1 elements
DEBUG: ParameterBinding Information: 0 :         Argument type String is not IList, treating this as scalar
DEBUG: ParameterBinding Information: 0 :         Adding scalar element of type String to array position 0
DEBUG: ParameterBinding Information: 0 :         BIND arg [System.String[]] to param [Path] SUCCESSFUL
DEBUG: ParameterBinding Information: 0 : BIND cmd line args to DYNAMIC parameters.
DEBUG: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Invoke-Item]
DEBUG: ParameterBinding Information: 0 : CALLING BeginProcessing
DEBUG: ParameterBinding Information: 0 : CALLING EndProcessing

Running

Trace-Command -Name CommandDiscovery {ii .} -PSHost

returns

DEBUG: CommandDiscovery Information: 0 : Looking up command: ii
DEBUG: CommandDiscovery Information: 0 : Alias found: ii  Invoke-Item
DEBUG: CommandDiscovery Information: 0 : Cmdlet found: Invoke-Item  Microsoft.PowerShell.Commands.InvokeItemCommand,
Microsoft.PowerShell.Commands.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

I guess maybe there's a file association problem or something. But I can't figure out what Invoke-Item is actually calling or how to change it.

How can I get this working again?


Solution

  • It is very tough to figure out exactly why it might not work for you anymore, but why not use the alternative which is the same in powershell and cmd:

    start .
    

    ( explorer . works too)

    If ii . is important, then try restarting Powershell console and / or the computer. Also try doing ii . -whatif to see if you get any clue on why it doesn't work anymore.