【发布时间】:2022-01-26 14:36:03
【问题描述】:
我正在尝试编写一个简单的函数,该函数从指定目录中获取文件,使用一个标准过滤它们,然后将结果放回去。我想出这个如下。如果它没有放在一个函数中,它就可以工作,而当它放在一个函数中时,它只运行Get-ChildItem,我不知道为什么。
这是我的简单代码:
function Move-AllSigned
{
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[string] $Path
)
Process {
$TempPath = Join-Path -Path $Path -ChildPath '\1'
Write-Host $TempPath
Set-Location -Path $Path
Get-ChildItem -Name "*sig*" | Move-Item -Destination $TempPath
Remove-Item *.pdf
Set-Location -Path $TempPath
Move-Item * -Destination $Path
}
}
【问题讨论】:
-
为什么在
Get-ChildItem上使用-Name参数? -
我建议使用
Push和Pop位置而不是Set-Location甚至更好,忘记更改目录并使用绝对路径工作。 -
用于仅选择包含名称部分 sig 的文件。
-
@BalifOne,
-Name与 cmdlet 的 匹配 行为无关。它只要求输出路径strings(相对于输入路径)而不是objects。
标签: powershell