我有这行:
$output.GetEnumerator() | Where-Object { $_.ItemPath -notlike "*.zip" } | Select ItemPath
示例输出:
ItemPath
--------
\\devws04
\\devws04\c$
\\devws04\c$\share
\\devws04\c$\share\Dieser ORdner ist offline erstellt worden
\\devws04\c$\share\FileOfflineMode - Copy.txt
\\devws04\c$\share\FileOfflineMode.txt
\\devws04\c$\share\Personal
\\devws04\c$\share\Personal\Okey Cuuus.txt
\\devws04\c$\share\Portfolio.txt
该行不包含包含“ * .zip”的路径值。它可以工作,但是我想在这个地方使用变量,而不是将所有内容都附加到与“ and”相同的行上。
我尝试了以下操作:
$ignoreFiles = @("*.zip", "*.psd")
$output.GetEnumerator() | Where-Object { $_.ItemPath -notin $ignoreFiles } | Select ItemPath
还有其他一些片段,但没有一个起作用。结果什么也没做。任何提示表示赞赏!
这是完整的输出:
ItemPath
--------
\\devws04
\\devws04\c$
\\devws04\c$\share
\\devws04\c$\share\Dieser ORdner ist offline erstellt worden
\\devws04\c$\share\Dieser ORdner ist offline erstellt worden\MeineofflineDateien.zip
\\devws04\c$\share\FileOfflineMode - Copy.txt
\\devws04\c$\share\FileOfflineMode.txt
\\devws04\c$\share\Personal
\\devws04\c$\share\Personal\Okey Cuuus.txt
\\devws04\c$\share\Portfolio.txt
编辑: 这是实际的代码,我的目标是进行csv导出,但是在我要过滤如上所述的值之前,
$ignoreFiles = "\.zip|\.psd"
#$ignoreFiles = @("*.zip", "*.psd")
$query = Get-WmiObject -query "SELECT * FROM Win32_OfflineFilesItem"
$hostName = [System.Net.Dns]::GetHostName()
$user = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$output = @()
$query | ? {
$output += [PSCustomObject] @{
User = $user
Hostname = $hostName
ItemPath = $_.ItemPath
}
}
$output | Export-CSV $outputPath -NoTypeInformation # ONLY EXPORT OBJECTS WHERE $_.ItemPath does not contain one of the values from $ignoreFiles!
答案 0 :(得分:2)
您还可以使用正则表达式来帮助您应对所面临的挑战:
$regex = "\.zip|\.psd"
$paths = $output.GetEnumerator() | Select-Object ItemPath
$paths.ItemPath -notmatch $regex
更新了更多答案
我想这应该可以解决问题
$output = $output | Where-Object {$_.ItemPath -notmatch $ignoreFiles }
$output | Export-CSV $outputPath -NoTypeInformation # ONLY EXPORT OBJECTS WHERE $_.ItemPath does not contain one of the values from $ignoreFiles!
答案 1 :(得分:0)
不确定$output
是什么,
但是使用变量应该完全相同:
$ext = "*.zip"
$output | Where-Object { $_.ItemPath -notlike $ext } | Select ItemPath
您还可以将-notin用于一系列事物,具体取决于输入:
gci | Where-Object { $_.Extension -notin ($ext, ".7z") } | Select FullName