Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Net view > .txt / -Replace

Dobrý den,

chtěl bych Vás poprosit o radu. Pomocí příkazu net view > .txt si vytvořím seznam všech pc v síti v txt. Problém ale je, že po vytvoření vypadá soubor třeba takto a já chci výpis z txt dále používat třeba pro WMI:

Název serveru Poznámka

-------------------------------------------------- -----------------------------
\\pc-xp1
\\pc-xp2
\\w7-pepa
\\w71
Příkaz byl úspěšně dokončen.

Pracuji v PowerShellu a pomocí Foreach-object a -replace si dokáži vymazat texťák tak, aby mi tam zůstaly jen počítače.. Problém ale je, že tam zůstanou zbylé prázdné řádky a také mezery za vypsanými počítači a WMI to potom neschroustá.

Předem děkuji za tipy, triky. ;)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
.. možná by to chtělo rozvést co je účelem Tvého snažení. Hodně věcí (zkušený powershell guru by řek…
MKc 14.02.2013 16:10
MKc
Děkuji moc oběma za komentáře! To mě nenapadlo, děkuji, dobrý nápad! Jde mi o to, že potřebuji vyexp…
miny 14.02.2013 16:51
miny
to v siti nemate domain controller? nemyslim ze pomoci net view vyexportujes to co potrebujes. Pokud…
MKc 14.02.2013 18:15
MKc
Já to mám do školy, kde se učíme s PowerShellem, tak právě proto to musím dělat přes něj. Jdu si nai…
miny 14.02.2013 22:27
miny
OMG, strašný problém.. net view |find "\\" edit: aha, powershell. :-) edit2: v podstatě ti stačí…
touchwood 14.02.2013 22:57
touchwood
Já jsem to nakonec vyřešil jinak, že jsem si udělal lehkej skript pomocí foreach a select-object. J…
miny 15.02.2013 13:08
miny
No počkej počkej.. a jak si do te proměnné pro foreach dostal ty computer hostnames? nový
MKc 18.02.2013 09:26
MKc
.. jeden ukázkový příklad (načte example.txt kde je výše uvedený text s hostnamy vč. UNC cesty) $a… poslední
MKc 18.02.2013 09:35
MKc

.. možná by to chtělo rozvést co je účelem Tvého snažení. Hodně věcí (zkušený powershell guru by řekl všechno) se dá dělat přímo v Powershellu.
Myslím, že pro Tvou potřebu net view ani použít nemusíš.

Půjde to určitě takhle:
načteš do proměnné (aby se tím lépe pracovalo) obsah souboru computers.txt .. i se vším tim bordelem, a pak pomocí regulárních výrazů vyhledáš řetězec \\ a text co za tím následuje. Pokud to napíšeš správně, budeš mít pouze názvy computeru v property Value a s tím dale pracovat.

Děkuji moc oběma za komentáře! To mě nenapadlo, děkuji, dobrý nápad!
Jde mi o to, že potřebuji vyexportovat počítače v síti pomocí příkazového řádku (v PowerShellu) do textového souboru a s tím souborem potom dál pracovat v síti. S tou další prací v síti myslím: Vyhledat v klientech instalované produkty, které některé pc nemají a ty potom nasadit. Proto mě napadlo si vyexportovat všechny pc v síti tímto způsobem do texťáku a ty potom načíst pomocí get-content .. a použít gwmi win32_product ..

to v siti nemate domain controller? nemyslim ze pomoci net view vyexportujes to co potrebujes.
Pokud jsou PC v doméně (v dnešní době si pomalu nedokážu představit sít bez domain controlleru), pomocí ADSI nebo GET-ADcomputer (tady potřebuješ naimportovat AD cmdlet) si snadno vytáhneš veškeré computer accounty.

Z hlavy:
get-adcomputer -filter * -properties * |gwmi win32_class -computername $_ |?{$_.product -like "*blabla*"} .. atd atd

Zkusím vykoumat ten regex výraz na vytažení computernames z textaku jakkoliv strukturovaneho ...

Já to mám do školy, kde se učíme s PowerShellem, tak právě proto to musím dělat přes něj. Jdu si naimportovat AD cmdlet a zkusím to. Dobře, děkuji mockrát! :)

Teď koukám, že i pomocí net view | Select-String '\\' > computers.txt
dostanu výsledek:

\\TOMAS-SERVER
\\TOMAS-XP1
\\TOMAS-XP2
\\XP3

Takže teď se ještě zbavit těch mezer pomocí \\ :))

OMG, strašný problém..

net view |find "\\"

edit: aha, powershell. :-)

edit2: v podstatě ti stačí nastavit delimiter na mezeru a z řádku vybrat vždy první element.

nějak takto:

PS C:\> $file = Get-Content .\test.txt
foreach ($row in $file) {
  $fields = $row.Split(' ')
.
.
.

 

.. jeden ukázkový příklad (načte example.txt kde je výše uvedený text s hostnamy vč. UNC cesty)

$a = gc .\example.txt
$computers = [regex]::matches($a,"(?<=\\\\)\S*")
$pole = ($computers |foreach-object {$_.value})
$pole |%{gwmi -computername $_ win32_bios |select serialnumber}

Zpět do poradny Odpovědět na původní otázku Nahoru