2017-02-10 152 views
0

我在PowerShell中監視文件夾的設置來創建一個運行以下批處理文件校驗和行書:「權限被拒絕」的文件

pushd \\server\folder 
for %%a in (*.wav) do if not exist "%%a.md5" md5sum "%%a" >> "%%a.md5" 
popd 

,我找到了我將文件移動到文件夾中運行不錯,但如果我將文件複製到文件夾中,則會在某些導致空白校驗和的文件中獲得「權限被拒絕」。它似乎沒有一致,但我可以毫無問題地從文件夾手動運行批處理腳本。我以管理員身份登錄系統(Win7)。有任何想法嗎?

編輯:這是PowerShell腳本:

$folder = '\\server\folder' 
$filter = '*.wav' 

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} 

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
$name = $Event.SourceEventArgs.Name 
$changeType = $Event.SourceEventArgs.ChangeType 
$timeStamp = $Event.TimeGenerated 
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green 
write-host "test" 
Invoke-Item '\\server\folder\checksum.bat' 
+0

你運行該腳本作爲管理員的你的本地計算機或域? –

+1

文件複製完成前,FileSystemWatcher(我假設您使用該文件)事件可能會多次下沉,因此「md5sum」可能會嘗試讀取正在使用的文件,同樣,AV產品可能會鎖定新文件。您的選擇是實施重試策略或TTL系統,將新文件排隊在將來的某個時間進行處理。 –

+0

我不是網絡管理員,所以可能只是本地機器。我應該有完整的讀/寫訪問服務器,雖然... – Tom

回答

1

既然你是不是你沒有完全訪問驅動器上的文件,你不能確定域管理員。

除了PowerShell腳本中需要的任何修復(抱歉,無法幫助)之外,您應該爲自己提供對文件的完全訪問權限。

試試這個批處理文件:

PUSHD \\server\folder 
FOR %%F IN (*.wav) DO @TAKEOWN /F "%%F" 
FOR %%F IN (*.wav) DO @CACLS "%%F" /E /P <YourUsernameHere>:F 
FOR %%F IN (*.wav) DO @IF NOT EXIST "%%F.md5" md5sum "%%F" >> "%%F.md5" 
POPD 
+0

感謝您的幫助。儘管如此,我仍然遇到同樣的問題,因此可能是您建議的域管理員。 – Tom