Первый пост здесь!
Я новичок в powershell и пытаюсь написать несколько скриптов.
В настоящее время я пытаюсь написать сценарий powershell (PSVersion 5.1.15063.502) для поиска в реестре в Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders, чтобы найти любые записи, указывающие на указанный путь к файлу. Так что я могу изменить их, если потребуется. Использование функции Set-ItemProperty
.
В идеале я хотел бы выполнить поиск в части «Данные» папок оболочки пользователя (см. рисунок). а>
Теперь, когда я запускаю функцию Get-ItemProperty
, я получаю вывод папок, например:
PS C:\WINDOWS\system32> Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
*AppData : C:\Users\RD\AppData\Roaming
Cache : C:\Users\RD\AppData\Local\Microsoft\Windows\INetCache
Cookies : C:\Users\RD\AppData\Local\Microsoft\Windows\INetCookies
Desktop : C:\Users\RD\Desktop
Favorites : C:\Users\RD\Favorites
History : C:\Users\RD\AppData\Local\Microsoft\Windows\History
Local AppData : C:\Users\RD\AppData\Local
My Music : C:\Users\RD\Music
My Pictures : C:\Users\RD\Pictures
My Video : C:\Users\RD\Videos
NetHood : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Personal : C:\Users\RD\Documents
PrintHood : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Programs : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Recent
SendTo : C:\Users\RD\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu
Startup : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Templates : C:\Users\RD\AppData\Roaming\Microsoft\Windows\Templates
{374DE290-123F-4565-9164-39C4925E467B} : C:\Users\RD\Downloads
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
PSChildName : User Shell Folders
PSDrive : HKCU
PSProvider : Microsoft.PowerShell.Core\Registry*
Моя проблема, похоже, заключается в том, как я пытаюсь передать эту функцию, чтобы обеспечить вывод для элемента, указанного как «*Appdata\».
Я пробовал следующее, но не получил результата:
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" | Where { $_.Data -eq "*AppData\*"}
Я уверен, что делаю основную ошибку здесь, но просто не могу понять это.
Я также пробовал Get-ChildItem на этом:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ |
Where { $_.Name -like "*User Shell Folders*" } | Select Property | Where { $_.Property -like "*Appdata*" } | Format-Wide
Но не получите правильный вывод просто: {AppData, Cache, Cookies, Desktop...}
Я могу получить вывод аналогичного скрипта, глядя на жесткий диск:
PS C:\WINDOWS\system32> Get-ItemProperty -Path "C:\Users\RD\Documents" | Where { $_.Name -like "*Documents"}
Directory: C:\Users\RD
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 26/08/2017 13:00 Documents
Может быть, это из-за различий в параметрах PSDrive? Любые советы будут оценены по достоинству.