需要传递参数的函数"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
我已将以下内容放入我的 $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