簡體   English   中英

System.IO.FileSystemWatcher 和映射的網絡驅動器

[英]System.IO.FileSystemWatcher and mapped network drives

我使用以下 PowerShell 腳本來監視新創建文件的映射驅動器,並將這些更改寫入 csv 文件。

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = 'Z:\'
$action = 
{
    $path = $event.SourceEventArgs.FullPath
    $changetype = $event.SourceEventArgs.ChangeType
    Write-output "$path was $changetype at $(get-date)" >> C:\temp\HostFileList.csv
    
}


Register-ObjectEvent $watcher 'Created' -Action $action
 
Get-EventSubscriber

while($true){ sleep -seconds 1 }

我正在運行此腳本的計算機被多個用戶大量使用。 每個用戶都將使用自己的配置文件登錄計算機,單擊桌面批處理文件以映射網絡驅動器文件夾並將他們的工作保存在那里。 我的腳本是在本地組策略中設置的,以便在啟動時運行。 據我所知,腳本在后台運行和偵聽映射驅動器文件夾沒有任何問題。 我的問題是腳本拒絕將輸出文件寫入指定位置。 如果我手動運行腳本,它會很好地創建輸出文件。 此外,當我在啟用本地 GP 啟動腳本的情況下手動運行腳本時,我的文件中有兩個條目,這讓我相信腳本在本地 GP 上運行良好。 誰能告訴我為什么我的腳本在手動運行時會創建輸出文件,而在啟動時運行時卻不會? 非常感謝任何反饋。

至於這...

Write-output 

寫輸出 (Microsoft.PowerShell.Utility)

將指定的對象發送到管道中的下一個命令。 如果命令是管道中的最后一個命令,則對象將顯示在控制台中。

使用文件 cmdlet

Export-Csv
Out-File

...和 ​​-append 參數。 因此,收集您的財產並將其輸送到其中之一。

 | Export-Csv -Path 'C:\temp\HostFileList.csv' -Append -NoTypeInformation

導出-CSV (Microsoft.PowerShell.Utility)

將對象轉換為一系列逗號分隔值 (CSV) 字符串並將這些字符串保存到文件中。

$AppService = (Get-Service -DisplayName *Application* | Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* | Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path ./Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv

"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"

輸出文件 (Microsoft.PowerShell.Utility) - PowerShell

將輸出發送到文件。

-Append 將輸出添加到現有文件的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM