![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Доступ к файлу из нескольких потоков |
|
PowerShell - [решено] Доступ к файлу из нескольких потоков
|
Пользователь Сообщения: 80 |
Добрый День!
Скрипт (многопоточный - цель была именно эта) считывает данные из реестра и записывает результат в файл, при этом если с ПК нет связи ил не рабочий WMI то должен ошибки записать в разные файлы Каким образом организовать доступ к одному файлу из разных потоков на запись? cls Set-PSDebug -Trace 1 workflow reestr { param ($IP) foreach –parallel($PS in $IP){ InlineScript { Try { $pk = Test-Connection $using:ps -Count 4 -ErrorAction stop Try { $ArchVersion = (Get-WmiObject win32_Computersystem -computer $using:PS -ErrorAction Stop).systemtype If ($ArchVersion -like "x64*") {Set-Service -ComputerName $using:PS -Name RemoteRegistry -StartupType Automatic -Status Running -ErrorAction SilentlyContinue $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $using:PS, 'Registry64') $RegKey= $Reg.OpenSubKey("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run") $key = $RegKey.GetValue("DelBginfoOld") } else {Set-Service -ComputerName $using:PS -Name RemoteRegistry -StartupType Automatic -Status Running -ErrorAction SilentlyContinue $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $using:PS) $RegKey= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run") $key = $RegKey.GetValue("DelBginfoOld") } Add-Content d:\result.txt "$using:ps, $key" } Catch {Add-Content d:\wmi.txt $using:ps} } Catch {Add-Content d:\noping.txt $using:ps} } } } $IPS = (Get-Content d:\Bginfo.txt) Reestr $IPS |
|
Отправлено: 09:19, 23-08-2018 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Вернуть объекты и уже в не worfklow обновлять:
workflow reestr { param ($IP) foreach –parallel($PS in $IP){ InlineScript { Try { $pk = Test-Connection $using:ps -Count 4 -ErrorAction stop Try { $key = "" $ArchVersion = (Get-WmiObject win32_Computersystem -computer $using:PS -ErrorAction Stop).systemtype If ($ArchVersion -like "x64*") { Set-Service -ComputerName $using:PS -Name RemoteRegistry -StartupType Automatic -Status Running -ErrorAction SilentlyContinue $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $using:PS, 'Registry64') $RegKey= $Reg.OpenSubKey("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run") $key = $RegKey.GetValue("DelBginfoOld") } else { Set-Service -ComputerName $using:PS -Name RemoteRegistry -StartupType Automatic -Status Running -ErrorAction SilentlyContinue $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $using:PS) $RegKey= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run") $key = $RegKey.GetValue("DelBginfoOld") } } Catch {$key = "WMI"} } Catch {$key = "NOPING"} [PSCustomObject] @{ ComputerName = $using:ps Key = $key } } } } $IPS = (Get-Content d:\Bginfo.txt) Reestr $IPS | Foreach { if($_.Key -eq "WMI") { Add-Content d:\wmi.txt $_.ComputerName } elseif ($_.Key -eq "NOPING") { Add-Content d:\noping.txt $_.ComputerName } else { Add-Content d:\result.txt "$($_.ComputerName), $($_.key)" } } |
Отправлено: 09:54, 23-08-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать lox-ness, либо — не заниматься извращениями в виде текстового файла, а пользовать базу данных посредством ADO — и пишите, откуда хотите. Есть SQL — пользуйте его, нет SQL — пользуйте Jet.
|
Отправлено: 10:52, 23-08-2018 | #3 |
Пользователь Сообщения: 80
|
Профиль | Отправить PM | Цитировать Спасибо за помощь и советы
|
Отправлено: 16:03, 23-08-2018 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Доступ к файлу | KOT MATPOCKuH | Microsoft Windows 2000/XP | 2 | 20-08-2018 20:18 | |
Медиа - [решено] 0x80070780 доступ к этому файлу из системы отсутствует | xeliot | Microsoft Windows 10 | 2 | 04-02-2016 18:40 | |
Доступ - доступ к файлу в корзине | jah | Microsoft Windows 7 | 5 | 12-04-2014 18:14 | |
Sharepoint - общий доступ к файлу | ugara | Другие серверные продукты | 3 | 15-02-2011 13:28 | |
C/C++ - Открыть доступ к файлу. | btf | Программирование и базы данных | 4 | 19-01-2011 18:35 |
|