Lo script Powershell non si attiva


1

Sono abbastanza nuovo su PowerShell ma sto eseguendo il seguente script in PS ISE:

$source = "E:\MEX_Websites\Customer_Hosting\MyFolderB\Reports\"
$filter = "*.*"

$fsw = New-Object System.IO.FileSystemWatcher $source, $filter -Property @{
IncludeSubDirectories=$false
NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite'
}

$onCreated = Register-ObjectEvent $fsw Changed -SourceIdentifier       MyFolderBReports -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp"
Move-Item E:\MEX_Websites\Customer_Hosting\MyFolderB\Reports\*.* -Destination M:\MyFolderB\Reports\
}

Quindi, in sostanza, dovrebbe essere in attesa di un file da aggiungere nella cartella MyFolderB \ Reports, quindi spostarlo nella cartella Destination. Sembra tutto perfetto e faccio clic sul pulsante "Esegui script" in PS ISE e tutto si esegue perfettamente ma non succede nulla. Quando inserisco un file nella cartella di base, non lo sposta.

Qualche idea su quale passo mi manca qui?

Risposte:


0

Ti sei iscritto solo all'evento Changed: questo si verifica quando il contenuto di un file viene modificato o viene copiato. Ciò non include i file creati o spostati.

Potrebbe essere necessario armeggiare per ottenere l'output come desiderato, ma dovrebbe funzionare come segue:

$source = "C:\Ops"
$filter = "*.*"

$fsw = New-Object System.IO.FileSystemWatcher $source, $filter -Property @{
    IncludeSubDirectories=$false
    NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite'
}

$onCreated = @()

@(
    "Changed",
    "Created",
    "Renamed"
) | Foreach-Object {
    $onCreated += Register-ObjectEvent $fsw -EventName $_ -SourceIdentifier "MyFolderBReports_$_" -Action {
        $path = $Event.SourceEventArgs.FullPath
        $name = $Event.SourceEventArgs.Name
        $changeType = $Event.SourceEventArgs.ChangeType
        $timeStamp = $Event.TimeGenerated
        Write-Host "The file '$name' was $changeType at $timeStamp"
        Move-Item C:\Ops\*.* -Destination C:\Ops\Test
    }
}

Si sta registrando agli eventi creati e rinominati in aggiunta all'evento modificato, quindi dovrebbe coprire tutte le basi. Guardare $fsw | GMspettacoli c'è anche Deleted, Disposeded Erroreventi, ma per il tuo scopo non penso che siano richiesti.


Solo una nota, se stai cercando di fare clic con il pulsante destro del mouse> nuovo file, lo sposterà prima che tu abbia la possibilità di nominarlo
Deadly-Bagel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.