如何将1709用作通配符?值1709作为$MoveItem.Version
存储在数组中,但我无法弄清楚当值来自数组时-like
是如何进行的,因为我无法放入通配符*
。我也试过做一场比赛。
文件名如下所示:REFW10-X86-1709_01-12-2017.wim
。
下面的代码工作正常,但我想自动化它,所以一切都来自数组。这可能吗?
Get-ChildItem -Path $OSPathTemp -Recurse | Where {
($_.Name -eq $MoveItem.File) -and
($_.Name -like "*1709*")
} | Select-Object -ExpandProperty FullName
$MoveItem.Version
包含1607,1706,1709
。我想只选择1709的那个。最终输出应该如下所示:
foreach ($MoveItem in $MoveItems) {
Get-ChildItem -Path $OSPathTemp -Recurse | Where {
($_.Name -eq $MoveItem.File) -and
($_.Name -like $MoveItem.Version)
} | Select-Object -ExpandProperty FullName
}
Array看起来像这样:
$MoveItem = @(
[pscustomobject]@{File="REFW10-X86-1709_01-12-2017.wim";Version=1709}
[pscustomobject]@{File="REFW10-X86-1706_01-12-2017.wim";Version=1706}
)
答案 0 :(得分:0)
所以你有一个名为$MoveItem
的散列表(或类似的),它具有一个.File
属性是一个文件名,你有一个.Versions
属性是一个字符串数组吗?
测试名称:REFW10-X86-1709_01-12-2017.wim
Get-ChildItem -Path $OSPathTemp -Recurse |
ForEach-Object {
If ($_.Name -match '-\d{4}_') { $Version = $Matches[0] }
If ($Version -in $MoveItem.Versions -and
$_.Name -eq $MoveItem.File) { $_.FullName }
}