Diskuze: PowerShell - pouzitie Parallel processing - Workflow a vratenie vystupnych premenych

Člen

Zobrazeno 9 zpráv z 9.
ten workflow jsem ještě nezkoušel, ani foreach parallel
ale mohl by to vyresit Start-Job a souvisejici commandlety na joby
uvidim, jestli budu mit vecer vic casu na to mrknout a neco vic k tomu napsat
workflow PingTestOnline
{
param($computers)
foreach -parallel ($computer in $computers)
{
$TestResult = Test-Connection -ComputerName $computer -Count 1 -Quiet
if($TestResult)
{
Write-Output $computer
}
elseif(!$TestResult)
{
Write-Output $computer
}
}
}
$computers = Get-ADComputer -SearchBase "***" -LDAPFilter "(&(name=*12481*))" | select name -ExpandProperty Name
PingTestOnline $computers
Ak by sa dalo aspon toto rozdelit aby mu vracalo $online a $offline premennu tak u6 bz som dalej vedel ale to sa proste neda asi.
Takže som prišiel na toto:
Workflow Test-MultiConnection {
param([string[]] $ComputerName)
foreach -Parallel ($Computer in $ComputerName) {
sequence {
$online = Test-Connection -ComputerName $Computer -Count 1 -Quiet
$Obj = New-Object -Type PSObject -Property @{
ComputerName = $Computer
Online = $online
}
$Obj
}
}
}
$computers = Get-ADComputer -SearchBase "OU=***" -LDAPFilter "(&(name=*24519*))" | select name -ExpandProperty Name
$output = Test-MultiConnection $computers | Select -Property ComputerName, Online | Format-Table -AutoSize #DO TADIAL TO IDE
$online = $output | select ComputerName
$online
V obrazku je to spohladu debugeru preco boze nemozem vyselectovat tie ktore maju Pod Property Online status true. Dokonca nemozem ani selectovat vseobecne cely stlpec a pritom riadok 16 to bez problemu robi omg.
Sorry obrazok je nanic ale je to to vpravo precitat sa to da. A teda riadok 16 este funguje :
$output = ....
tak to jsem rád, že jsi mi ušetřil luštění a už ti to jede
jinak k tomu selectovani .... mam pocit ze pletes selectovani a filtrovani
....selectovani (Select-Object) rika, ktere sloupce (vlastnosti) ze vsech
vstupnich maji projit dal
....filtrovani (Where-Object) rika, ktere radky (objekty) ze vsech vstupnich
maji projit dal
priklad .... mas tabulku(pole objektu) $lide
Cislo | Jmeno | Prijmeni |
1 | Pepa | Novak |
2 | Jirka | Kolar |
3 | Antonin | Novy |
$lide | select -Property Cislo, Prijmeni
Cislo | Prijmeni |
1 | Novak |
2 | Kolar |
3 | Novy |
$lide | where { $_.Cislo -lt 3 }
Cislo | Jmeno | Prijmeni |
1 | Pepa | Novak |
2 | Jirka | Kolar |
takze pokud chces jen radky s pocitacema, ktery jsou online, tak vybiras radky - potrebujes filtrovat pomoci where-object / where
tedy videl bych to na neco jako
$online = $output | where {$_.Online -eq $True } | select ComputerName
$online
to nejdriv pusti dal jen ty radky, ktere jsou online
potom to z kazdeho 'online' radku vybere pouze sloupec s nazvem pocitace
defacto select a where tady funguje jako v SQL, pokud jsi uz nekdy v SQL neco
delal ... pokud ne, tak po tomhle bude lehci se ho naucit
Hej ja som to skušal ale toto sa sprava velmi zvlaštne akoby tohadam ani nešlo skus si to je to vlastne obdoba tamtoho, len testujeme webove stranky debugni si to na online a uvidiš aky je vystup ani sa mi tomu verit nechce:
Workflow Test-MultiConnection {
param([string[]] $ComputerName)
foreach -Parallel ($Computer in $ComputerName) {
sequence {
$online = Test-Connection -ComputerName $Computer -Count 1 -Quiet
$Obj = New-Object -Type PSObject -Property @{
ComputerName = $Computer
Online = $online
}
$Obj
}
}
}
$computers = "dsl.sk", "pokec.sk", "google.com","hfgfh.sk", "yacloskj.sk"
$output = Test-MultiConnection $computers | Select -Property ComputerName, Online | Format-Table -AutoSize #DO TADIAL TO IDE
$online = $output | where {$_.Online -eq $true } | select ComputerName
$online
Robi to to format table omg kurnik vcera 3 hodiny asi som nato nemohol prist do 19 som bol v praci a to som chcel odist o 15 xD. Format-Table znici tu tabulku akokeby a uz z nej sa neda selectovat. Nevieš prečo je to tak?
jj, takových zásekových situací jsem si taky užil... a jeste užiju
format-table ti prevede objekty na textovou reprezentaci plus formatovaci instrukce.... tedy puvodni objekty uz nejsou/byly zahozeny (da se ale resit... jsou zpusoby jak vypsat a dal zpracovavat)
tady se hodi poznamenat, že powershell rozlisuje mezi zpracovavanymi objekty a jejich textovou reprezentaci, kterou vypisuje na konzoli.... narozdil od cmd nebo bash, ktere zpracovavaji stringy/znaky a ty same stringy/znaky vypisuji
powershell na konci kazdeho radku, ktery mu odEntrujes, automaticky pusti defaultni formatovac na objekty, ktere po zpracovani radku na konci vylezly
takovych ficurek a tajemnych vlastnosti ma powershell vic a i proto mě
přitahuje
Zobrazeno 9 zpráv z 9.