Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Доступ к файлу из нескольких потоков

Ответить
Настройки темы
PowerShell - [решено] Доступ к файлу из нескольких потоков

Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый День!
Скрипт (многопоточный - цель была именно эта) считывает данные из реестра и записывает результат в файл, при этом если с ПК нет связи ил не рабочий 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
Благодарности: 861

Профиль | Отправить 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
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Цитата lox-ness:
Каким образом организовать доступ к одному файлу из разных потоков на запись? »
Вернуть объекты и уже в не worfklow обновлять: »
lox-ness, либо — не заниматься извращениями в виде текстового файла, а пользовать базу данных посредством ADO — и пишите, откуда хотите. Есть SQL — пользуйте его, нет SQL — пользуйте Jet.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:52, 23-08-2018 | #3


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо за помощь и советы

Отправлено: 16:03, 23-08-2018 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Доступ к файлу из нескольких потоков

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Доступ к файлу 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




 
Переход