我想要做的是採用超過90天的登錄名並將它們與Get-WmiObject Win32_UserProfile
的輸出中的當前配置文件列表進行比較。我已經嘗試了幾個小時,但仍然無法弄清楚爲什麼它不處理名稱列表(我認爲)它應該。使用PowerShell按列表過濾輸出
Invoke-Command -ComputerName wsci201oit -ScriptBlock {
$AllUsers = Get-WmiObject Win32_UserProfile | Where-Object -FilterScript {
$_.LocalPath -notlike 'c:\windows*' -and
$_.LocalPath -notlike '*ADMINISTRATOR' -and
$_.LocalPath -notlike '*Public' -and
$_.LocalPath -notlike '*Temp'
} | Select-Object -Property LocalPath, SID
$Over90 = Get-ChildItem C:\Users | where {
$_.LastWriteTime -lt (Get-Date).AddDays(-30) -and
$_.Name -notlike 'ADMINISTRATOR' -and
$_.Name -notlike 'Public' -and
$_.Name -notlike 'TEMP'
} | Select-Object Name
$Over90 | Select-Object Name | Out-File C:\Windows\Temp\Over90.txt
$List = Get-Content -Path C:\Windows\Temp\Over90.txt
$AllUsers | Where-Object { $_.LocalPath -like "*$List" }
}
$AllUsers
的該outlput含有如C的路徑:\用戶\ ADM-托馬斯和SID。 $List
的輸出僅包含表達式。我試圖將$List
中的「adm-thomas」匹配到「C:\ Users \ adm-thomas」LocalPath並在$List
中對每個名稱進行測試。
我不知道分割路徑命令,因爲它完全消除了我遇到的問題。我只是將結果寫入列表中,部分原因是因爲所有這些都包含在'invoke-command'中,並且無論我的'select-object'如何,它都會提取PSComputerName和RunspaceId。這比我最初的嘗試要優雅得多,但我仍然可以理解,所以非常感謝! –