需要传递参数的函数"alias"

A function "alias" that needs to pass along parameters

我已将以下内容放入我的 $PROFILE:

function dir
{
    Get-ChildItem -Force $args
}

我想要的是一个简单的 "dir" 命令,它列出 所有 文件,包括隐藏文件和系统文件。

但是,一旦我传递了一些参数:

dir \ -Directory

我得到了我的根目录的完整列表作为奖励,后跟此错误:

Get-ChildItem : Cannot find path 'C:\Users\myuser-Directory' because it does not exist.

我的意图当然是我的小自制 "alias" 会扩展成这个:

Get-ChildItem -Force \ -Directory

但“-Directory”却被视为字符串文字。我怎样才能让我的 dir 函数按照我想要的方式传递参数(而不是作为字符串数组)?

$args 是一个数组。如果你这样使用它:

Get-ChildItem -Force $args

这和你这样做是一样的:

Get-ChildItem -Force -Path '\', '-Directory'

有效(在某种程度上),因为参数 -Path 接受数组输入。

使用splatting来避免这个陷阱:

Get-ChildItem -Force @args