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