Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Многопоточный Test-Path (http://forum.oszone.net/showthread.php?t=306410)

c4uran 08-10-2015 16:38 2561922

[решено] Многопоточный Test-Path
 
Цель физически(по пути) на 600 компах(чтобы не долго работал скрипт) найти установленную 1с и вывалить все это в лог, как бы к этому прикрутить много поточность?

Код:

$computers = Get-ADComputer -Filter * -SearchBase "mydomain"
$Report = @()
foreach ($computer in $computers)
{
Try
{
$computername = $computer.name
Test-Connection $computer -Count 1 -Quiet -ErrorAction stop
}
Catch
{
$report += New-object PSObject -property @{
        "Computer Name" = $computer.Name
                "ErrorMessage" = "Unabe to contact"
}
Continue
}
$report += New-object PSObject -property @{
        "ComputerName" = $computername
        "ErrorMessage" = Test-Path "\\$computername\c$\Program Files\1cv8\8.3.6.2152"
}
}


$Report | Out-GridView


Iska 08-10-2015 19:00 2561973

Цитата:

Цитата c4uran
как бы к этому прикрутить много поточность? »

Групповой политикой «на машину», startup-скрипт. Результат пишется в базу данных (SQL/Jet/OLE DB) новой записью/обновлением существующей записи.

c4uran 09-10-2015 09:23 2562137

Нет прав на гпо

Kazun 09-10-2015 09:48 2562150

Самое простое использовать workflow:

Код:

$computers = Get-ADComputer -Filter "Enabled -eq '$true'" -SearchBase "mydomain"

workflow Get-Path1C {
        param($ComputerName)
       
        foreach -parallel($computer in $ComputerName) {
                InlineScript {
                        $computername = $using:computer.name
                        if(Test-Connection $computername -Count 2 -Quiet)
                        {
                                New-Object PSObject -Property @{
                                        "ComputerName" = $computername
                                        "Result" = Test-Path -Path "\\$computername\c$\Program Files\1cv8\8.3.6.2152"
                                }
                        }
                        else
                        {
                                New-Object PSObject -Property @{
                                        "ComputerName" = $computername
                                        "Result" = "Unabe to contact"
                                }
                        }
                }
        }       
}

Get-Path1C $computers | Select-Object ComputerName,Result |  Out-GridView


c4uran 09-10-2015 10:06 2562156

То что нужно, благодарю, не подскажите что почитать чтобы понять как workflow работает?

Kazun 09-10-2015 10:12 2562161

Начать можно с ( а потом уже все что найдется по теме, если потребуется доп. информация):

Getting Started with Windows PowerShell Workflow - https://technet.microsoft.com/en-us/.../jj134242.aspx
Workflow documentation now live on TechNet - http://social.technet.microsoft.com/...val-guide.aspx
Powershell Workflow Survival Guide - http://social.technet.microsoft.com/...val-guide.aspx


Время: 18:55.

Время: 18:55.
© OSzone.net 2001-