У меня есть вопрос о требованиях к моему клиенту, в настоящее время я использую три сценария для выполнения своей работы. script1.ps1 - переименовывать файлы с * .host1.txt и * .host2.txt. Script2.ps1 - выбирает файлы с расширением * .host1.txt (в VM1), script3.ps1 выбирает файлы с расширением * .host2.txt (в VM2). Таким образом, это хорошо работает. Каковы мои требования к пользователю, предположим, что если script2.ps1 или script3.ps1 fini sh его текущее задание на соответствующих виртуальных машинах, сценарий должен переименовывать файлы на основе IDLE VM (если VM1 простаивает, он должен переименовать с * host1.txt и запустить задание, то же самое, если ВМ2 простаивает, его следует переименовать в * .host2.txt и запустить задание. вставив три сценария, которые я запускаю прямо сейчас, нужна помощь. Концепция заключается в том, что виртуальные машины не должны бездействовать, на основе сценария состояния простоя vm для переименования файлы и запустите задание.
script1
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Test"
$watcher.Filter = "*.txt"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$filename = [io.path]::GetFileNameWithoutExtension($path)
###$changeType = $Event.SourceEventArgs.ChangeType
###$logline = "$(Get-Date), $changeType, $path, $filename"
###Add-content "D:\log.txt" -value $logline
###$proc=start-process "D:\source\$filename.bat" -Wait -NoNewWindow
$script:counter++
$hostname=""
if(($script:counter % 2) -eq 0){
$hostname="host1"
} Else {
$hostname="host2"
}
Rename-Item -Path "C:\Test\$filename.txt" -NewName "$filename.$hostname.txt"
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
### Register-ObjectEvent $watcher "Changed" -Action $action
### Register-ObjectEvent $watcher "Deleted" -Action $action
### Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
Script2
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Test"
$watcher.Filter = "*.host1.txt"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$filename = [io.path]::GetFileNameWithoutExtension($path)
$length = $filename.length
$filename=$filename.substring(0,$length-6)
###$changeType = $Event.SourceEventArgs.ChangeType
###$logline = "$(Get-Date), $changeType, $path, $filename"
###Add-content "D:\log.txt" -value $logline
$proc=start-process "C:\Test\$filename.bat" -Wait
Remove-Item -Path "C:\Test\$filename.host1.txt"
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
### Register-ObjectEvent $watcher "Created" -Action $action
### Register-ObjectEvent $watcher "Changed" -Action $action
### Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
Script3
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Test"
$watcher.Filter = "*.host2.txt"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$filename = [io.path]::GetFileNameWithoutExtension($path)
$length = $filename.length
$filename=$filename.substring(0,$length-6)
###$changeType = $Event.SourceEventArgs.ChangeType
###$logline = "$(Get-Date), $changeType, $path, $filename"
###Add-content "D:\log.txt" -value $logline
$proc=start-process "C:\Test\$filename.bat" -Wait
Remove-Item -Path "C:\Test\$filename.host2.txt"
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
### Register-ObjectEvent $watcher "Created" -Action $action
### Register-ObjectEvent $watcher "Changed" -Action $action
### Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}