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. ;)
.. 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..
edit: aha, powershell.
edit2: v podstatě ti stačí nastavit delimiter na mezeru a z řádku vybrat vždy první element.
nějak takto:
Já jsem to nakonec vyřešil jinak, že jsem si udělal lehkej skript pomocí foreach a select-object.
Ještě jednou díky všem za možná řešení. ;)
No počkej počkej.. a jak si do te proměnné pro foreach dostal ty computer hostnames?
.. jeden ukázkový příklad (načte example.txt kde je výše uvedený text s hostnamy vč. UNC cesty)