【发布时间】:2018-12-07 04:57:14
【问题描述】:
我有这行:
$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
还有其他几个 sn-ps,但没有一个起作用。它对结果没有任何作用。任何提示表示赞赏!
这是完整的输出:
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!
【问题讨论】:
-
什么是 $output?您想要只返回路径还是完整对象?
-
是的,它会是完整的对象..
-
请看我更新的答案
-
@Mötz 很好,非常感谢!
-
请考虑分享最终结果以供其他人从您的问题中学习:)
标签: list powershell filtering