1

我注意到,当使用 PowerShell 的 FileSystemWatcher cmdlet 时,它似乎没有监视 System32 或其在我的 Windows 7 计算机中的子文件夹。一个脚本 Í 在监视“我的文档”的子文件夹时工作得很好(即“C:\Users\W\Documents\Fichiers PowerShell”是一个有效的 fplder 路径)但当我替换文件夹路径时不起作用System32(即 C:\Windows\System32\Recovery 是一个不起作用的路径)

这是我正在使用的脚本,但 System32 路径在其他 FileSystemWatcher 脚本中不起作用。任何有关解决方法的建议将不胜感激。我必须监控 C:\Windows\System32\Recovery。谢谢你。

function FileSystemWatcher([string]$log = "C:\Users\W\Documents\Fichiers     PowerShell\newfiles.txt",
[string]$folder = "C:\Windows\System32\Recovery",
[string]$filter  = "*ps1",
[char]$timeout = 1000
){
$FileSystemWatcher = New-object System.IO.FileSystemWatcher $folder, $filter

Write-Host "Press any key to abort monitoring $folder"
do {

$result = $FileSystemWatcher.WaitForChanged("created", $timeout)

if ($result.TimedOut -eq $false) {
$result.Name |
  Out-File $log -Append 
Write-Warning ("Detected new file: " + $result.name)
 $filename = (gc $log -ea 0)



ii "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 
remove-item "C:\Users\W\Documents\Fichiers PowerShell\newfiles.txt"


} 
} until ( [System.Console]::KeyAvailable )

Write-Host "Monitoring aborted."
Invoke-Item $log}



FileSystemWatcher
4

1 回答 1

1

试试这个:

$fsw = New-Object System.IO.FileSystemWatcher C:\Windows\System32 -Property @{
    IncludeSubdirectories = $true              
    NotifyFilter = [System.IO.NotifyFilters]::DirectoryName
}

$event = Register-ObjectEvent $fsw Created -SourceIdentifier DirectoryCreated -Action { 
    Write-Host "$($event.SourceArgs | fl * | Out-String)"
}

md C:\Windows\System32\temp2
于 2012-09-12T12:41:49.453 回答