功能
function findf {
Write-Host "Find files that match: $args"
gci -r | Where-Object { $_.name -match ".*$args.*" }
}
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。例如,
findf .exe
Run Code Online (Sandbox Code Playgroud)
-- 打印一堆不限制输出到 EXE 文件的内容 --
任何想法我做错了什么?
如果我从 PowerShell 命令窗口运行相同的命令,该命令将起作用:
gci -r | Where-Object { $_.name -match ".*.exe.*" }
Run Code Online (Sandbox Code Playgroud)
这有效并正确地向我显示与 *.EXE 模式匹配的文件
$args是一个表示参数集合的对象。
你应该:
$args[0]获取表示第一个参数的字符串的参考param定义,如输入参数:.
function findf {
param ([string]$SeachStr)
Write-Host "Find files that match: $SeachStr"
gci -r | Where-Object { $_.name -match ".*$SeachStr.*" }
}
Run Code Online (Sandbox Code Playgroud)
我总是提倡param尽可能使用,因为您可以像我在示例中所做的那样强输入变量。否则可能会做一些令人困惑的事情,比如将数组作为参数传递,这会导致各种难以追踪的问题。
| 归档时间: |
|
| 查看次数: |
11615 次 |
| 最近记录: |