我無法讓腳本正常工作。 我有三個數組。 extensions數組過濾正確。然而我的通配符數組並沒有產生我想要的結果。我究竟做錯了什麼?Where-Object和陣列未正確過濾
# Read List of Servers from flat file
$data=Get-Content C:\myscripts\admin_servers.txt
# Variables that will be used against search parameter
$extensions = @(".ecc", ".exx", ".ezz", ".vvv")
$wildcards = @("Help_*.txt", "How_*.txt", "Recovery+*")
$exclude = @("help_text.txt", "Lxr*.exx", "help_contents.txt")
# Loop each server one by one and do the following
foreach ($server in $data)
{
# Search the server E:\ and all subdirectories for the following types of
# extensions or wildcards.
Get-ChildItem -path \\$server\e$ -Recurse | Where-Object {
(($extensions -contains $_.Extension) -or $_.Name -like $wildcards) -and
$_.Name -notlike $exclude
}
}
'$ _名狀$ wildcards'是比較'$ _ Name'來。數組。您需要將'$ _。Name'與數組中的每個值進行比較。 –
所以我需要爲每個值添加-or和 - 語句? [0],[1],[2]等?有沒有辦法來減少?我希望數組能夠工作,而不必在where子句中指定每個值。 – Refried04
這樣做:'($ wildcards |%{「help_a.txt」-like $ _})。Contains($ true)'。可能有一個更簡潔的方法。我硬編碼一個文件名來測試它,但我認爲你明白了。 –