Skip to content

Need a way to bring back legacy Windows aliases for consistent experience #3610

Closed

Description

To address #929 we removed aliases that collided with native tools. However, some customers may want the legacy Windows PowerShell aliases because they are consistent with what they are used to. Proposal that has been discussed is to have a module that only contains aliases that users can import to get back that previous experience.

Activity

  1. added
    WG-Cmdletsgeneral cmdlet issues
    Up-for-GrabsUp-for-grabs issues are not high priorities, and may be opportunities for external contributors
    on Apr 20, 2017
  2. dchristian3188 commented on Apr 21, 2017

    @dchristian3188
    Contributor

    Where should this new module go?

  3. Gaelan commented on Apr 21, 2017

    @Gaelan

    It's not about "what we're used to." I'm a Mac user that has barely used PowerShell at all on windows. If I switched to powershell, it would be for the object-oriented model. My expectation is that ls gives me a stream of objects, because that is powershell's killer feature. Without that, PS is nothing.

  4. bgshacklett commented on Apr 21, 2017

    @bgshacklett

    Gaelan Steele (@Gaelan) for your use case, I would suggest using Get-ChildItem or gci as the short form, meant for interactive usage. I understand that it can be difficult to retrain muscle memory (I'm having trouble myself), but being explicit with what your asking the shell to give you is almost always going to give you a better experience than relying on aliases which were not originally intended for your platform. The decision to remove these aliases has not removed any functionality in PowerShell, but only changed the way the commands need to be invoked.

    ls certainly falls into a grey area, as it's a built-in in both PowerShell and Bash, but in the case of commands such as curl, wget, etc. which mask functionality that already exists on the system, I don't think there was really any question of what the "correct" behavior is, only the least disruptive. There was no solution that was going to be ideal for everyone. At least with this solution you will have an easy option to re-enable the aliases you wish to have in your environment.

  5. iSazonov commented on Apr 21, 2017

    @iSazonov
    Collaborator
  6. joeyaiello commented on Apr 21, 2017

    @joeyaiello
    Contributor

    Putting them in a module is only one proposal. The point is that there needs to be an interactive (and possibly also parse-time) mechanism for turning GNU/POSIX colliding aliases on and off. (Side note: it's not just *nix users who may want to turn them on, Windows users may also want to turn these aliases off.)

  7. added
    Issue-Enhancementthe issue is more of a feature request than a bug
    and removed
    Up-for-GrabsUp-for-grabs issues are not high priorities, and may be opportunities for external contributors
    on Apr 21, 2017
  8. joeyaiello commented on Apr 21, 2017

    @joeyaiello
    Contributor

    Also, current thinking is that this might be blocked on PowerShell/PowerShell-RFC#48, which is why I'm removing up-for-grabs and personally prioritizing driving that RFC to completion (it's blocking other usability issues as well).

  9. SteveL-MSFT commented on Apr 21, 2017

    @SteveL-MSFT
    MemberAuthor

    chuanjiao10 for cmdlet name collision, we already support that today:

    Microsoft.PowerShell.Management\Get-ChildItem
  10. joeyaiello commented on Apr 24, 2017

    @joeyaiello
    Contributor

    chuanjiao10: That might be the behavior you want, but you received far too much feedback on day one that people want things like ls -la to just work out of the box. (Side note: the full path to the binary will always work, no matter what path we take here.)

    The fact that you have a preference is why we're proposing that there be an opt-in mechanism for exactly the behavior you're describing.

    Sound reasonable?

    Also, the reason your example is failing is because we need to implement globbing with #954

  11. iSazonov commented on Apr 26, 2017

    @iSazonov
    Collaborator

    Is here a way to explicitly start external (OS) command?
    This is start cmdlet:

    &"where"

    Can we do somethink like:

    $nativecommand:where

    It can help with globbing and native pipes.

  12. bielawb commented on May 10, 2017

    @bielawb

    Ilya (@iSazonov) - I believe that can be done with Get-Command:

    $where = Get-Command -Name where -CommandType Application
    & $where
  13. SteveL-MSFT commented on May 10, 2017

    @SteveL-MSFT
    MemberAuthor

    chuanjiao10 the globbing issue you have above should be fixed in beta.1

  14. SteveL-MSFT commented on Jan 25, 2018

    @SteveL-MSFT
    MemberAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Issue-Enhancementthe issue is more of a feature request than a bugWG-Cmdletsgeneral cmdlet issues

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions