2011-06-30 14 views
5

Powershell'i kullanarak, uzak bir makinede belirtilen bir kayıt defteri anahtarının LastWriteTime değerini nasıl numaralandırabilirim?Uzaktaki bir makinede belirtilen kayıt defteri anahtarının LastWriteTime değerini döndürme

Uzak makinede Powershell yüklü Powershell uzaklaştırma yok. .NET ve WMI kullanılabilir. Yerel bir makinede lpftLastWriteTime almak için Advapi32.dll içinde RegEnumKeyEx işlevini başarıyla kullandım.

+0

Advapi32.dll için regedt32.exe dışında herhangi bir alternatif bulmuyorum. :( – JasonMArcher

+0

Çevremde dümdüz ve akla gelen hiçbir şey akla gelmedi. [Microsoft.Win32.RegistryKey] :: OpenRemoteBaseKey() uzaktaki kayıt defteri erişimi için geçmişte kullandığım şey ama yazma sürelerini – EBGreen

+0

yazdığını düşünmüyorum. Teşekkürler Jason ve EB Biz hala iyi görünüyoruz, bir şey bulursanız sizi bilgilendiririm. – Shaun

cevap

1

LogParser'ı kullanma hakkında, Microsoft?

$query = @" 

    SELECT 
     Path, 
     KeyName, 
     ValueName, 
     Value, 
     LastWriteTime 
    INTO $outfile 
    FROM \\remotecomputername\HKLM\etc\etc 
    WHERE LastWriteTime BETWEEN 
     TIMESTAMP('2011/08/01 00:00:00', 'yyyy/MM/dd hh:mm:ss') AND 
     TIMESTAMP('2011/09/06 00:00:00', 'yyyy/MM/dd hh:mm:ss') 
    ORDER BY LastWriteTime DESC 

"@ 

$inputtype = New-Object -comObject MSUtil.LogQuery.RegistryInputFormat 
$outputtype = New-Object -comObject MSUtil.LogQuery.CSVOutputFormat 
$outfile = 'c:\temp\outfile.csv' 
$logObject = new-object -com MSUtil.LogQuery 
$result = $logObject.ExecuteBatch($query, $inputtype, $outputtype) | Out-Null 

Sen gerekirse FROM yan tümcesi birden fazla bilgisayar sorgulamak için birden fazla virgülle ayrılmış değerler sağlayabilir:

Ve burada COM nesnesi kullanan bir kod örnek. Daha fazla okuma here.

İlgili konular