windows - 'Tilladelse nægtet' at køre script på filer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en opsætning af urmappe i Powershell for at oprette checksums, der kører følgende batchfil:


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


Jeg har fundet det, jeg flytter filer til mappen, det kører okay, men hvis jeg kopierer filer til mappen, får jeg 'tilladelse nægtet' på nogle af filerne, hvilket resulterer i tomme checksums. Det ser ud til at være konsekvent, selvom jeg kan Kør batch script manuelt fra mappen uden problemer. Jeg er på systemet som administrator (Win7) .Hver ideer?


EDIT: Dette er Powerhell-scriptet:


$folder = '\serverfolder' 
$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 '\serverfolderchecksum.bat'

Bedste reference


Da du ikke er en domæneadministrator, kan du ikke være sikker på, at du ikke har fuld adgang til filerne på drevet.


Ud over hvad der er brug for rettelser i dit PowerShell-script (undskyld, kan det ikke hjælpe dig), skal du give dig fuld adgang til filerne.


Prøv dette i batchfilen:


PUSHD \serverfolder
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