0

我正在編寫一個PowerShell模塊來查找每個登錄到計算機的用戶可能在其目錄中的HKEY_USERS中的數據。我最初的想法是通過所有的文件夾,像這樣安裝HKEY_USERS,找到一種方法,每個用戶的SID存儲在一個字符串變量,然後循環:在PowerShell中,我如何從所有SID中從HKEY_Users提取文件?

dir HKU\<STRING VARIABLE HOLDING SID>\Software\MyApp\Mydesireddata

有沒有一種方法可以讓我避免通過具有循環SID(因爲我不會提前知道它們),並從系統上的每個SID中提取文件信息,同時記住它來自哪個SID?

編輯:這是我嘗試使用註冊表編輯器從每個用戶的SID提取關鍵的一個例子(的vncviewer的EulaAccepted)

enter image description here

+1

這個問題沒有意義。註冊表中沒有文件。 –

+0

我試圖從HKEY_USERS中的每個目錄中提取數據。如果您安裝HKEY_USERS,則可以從PowerShell訪問該數據。 – AlwaysQuestioning

+0

註冊表項名稱字面上是'mydesiredfile.txt'?你可以在'regedit'中發佈一個示例註冊表鍵的截圖嗎? –

回答

3

使用Get-ChildItem檢索每個用戶特定的子項:

$UserHives = Get-ChildItem Registry::HKEY_USERS\ |Where-Object {$_.Name -match '^HKEY_USERS\\S-1-5-21-[\d\-]+$'} 

然後遍歷每個條目和檢索所需的註冊表值:

foreach($Hive in $UserHives) 
{ 
    # Construct path from base key 
    $Path = Join-Path $Hive.PSPath "SOFTWARE\MyApp\DataKey" 

    # Attempt to retrieve Item property 
    $Item = Get-ItemProperty -Path $Path -Name ValueName -ErrorAction SilentlyContinue 

    # Check if item property was there or not  
    if($Item) 
    { 
     $Item.ValueName 
    } 
    else 
    { 
     # doesn't exist 
    } 
} 
+0

優秀。這似乎按照我的意圖工作。在我接受答案之前,有沒有一種方法可以在不出於提高效率的情況下進行循環?我正在尋找所有SID文件夾中的同一個ItemProperty,所​​以我很好奇我是否可以在這些SID文件夾的父目錄級別進行遍歷。 – AlwaysQuestioning

相關問題