6Sep
A PowerShell egyik legjobb tulajdonsága a kiszolgálók távolról történő kezelésének lehetősége. Ez lehetővé teszi, hogy egyszerre egy csomó számot is kezelhess.
Olvassa el a korábbi cikkeket a sorozatban:
- Ismerje meg a Windows automatizálását a PowerShell segítségével
- A PowerMax-ek használata a PowerShell-ben
- A PowerShell objektumok objektumainak tanulása
- Tanulási formázás, szűrés és összehasonlítás a PowerShell
-bena sorozat egésze egész héten.
Mi a távolból?
A szerverek tömeges kezelése fárasztó lehet, és ha 50-es webszerverrel kellett volna IIS konfigurációs változást készíteni, akkor tudni fogod, hogy mit értek. Ezek olyan helyzetek, amikor a PowerShell Remoting és a nyelv szkriptkészségei mentésre kerülnek. A HTTP vagy a biztonságosabb HTTPS használatával a PowerShell Remoting lehetővé teszi, hogy parancsokat küldjön egy távoli gépre a hálózaton. Ezután a gép futtatja a parancsokat, és visszaküldi a kimenetet, amely viszont megjelenik a képernyőn.
Get Technical
A PowerShell Remoting legfontosabb elemei egy Windows Service, a Windows Remote Management vagy a WinRM szolgáltatás, amint ismertté vált. A WinRM használatával egy vagy több munkamenet-konfigurációt( végpontokként is) állíthat be, amelyek alapvetően olyan fájlok, amelyek információkat tartalmaznak a távoli PowerShell példányhoz csatlakozó személy által nyújtott tapasztalatokról. Pontosabban, a munkamenet-konfigurációs fájlok segítségével meghatározhatja, hogy ki és mikor nem tud kapcsolódni a példához, milyen parancsmagokat és parancsfájlokat futtathat, valamint milyen biztonsági környezetet kell a munkamenet futtatásához használni. A WinRM szolgáltatás használatával beállíthatja a "hallgatókat" is, akik hallgatják a bejövő PowerShell kéréseket. Ezek a "hallgatók" HTTP vagy HTTPS protokollok lehetnek, és egyetlen gépre csatlakozhatnak. Ha egy PowerShell kapcsolatot megnyit egy másik gépnek( technikailag ez a HTTP-alapú WS-MAN protokollon keresztül történik), akkor a kapcsolat e "hallgatók" egyikéhez kötődik. A "hallgatók" feladata, hogy a forgalmat a megfelelő munkamenet-konfigurációs fájlhoz társított alkalmazásnak küldje;az alkalmazás( általában PowerShell, de lehet, hogy más hosting alkalmazások, ha akarod), akkor futtatja a parancsot, és visszaadja az eredményeket a "hallgató" a hálózaton keresztül, és vissza a gépre.
Mutasd meg, hogyan
Az első dolog, amit meg kell tennie, hogy engedélyezze a Remoting-ot a gépen, ahová csatlakozni szeretne. Ezt a következő módon futtathatja:
Engedélyezés-PSRemoting
Igennel kell válaszolnia minden kérdésre. Az Enable-PSRemoting futtatásakor néhány módosítás történik a számítógépen:
- A WinRM szolgáltatás elindul.
- A WinRM szolgáltatás a kézi indítási módtól az Automatikusig változik.
- Hozzon létre egy HTTP-figyelőt, amely minden hálózati kártyához tartozik.
- Ezenkívül létrehoz egy bejövő tűzfal kivételt a WS-MAN protokoll számára.
- Néhány alapértelmezett munkamenet-konfiguráció jön létre
Ha Windows 7 operációs rendszert futtat, és a hálózati kártya helye nyilvános, akkor a PowerShell Remoting nem működik megfelelően. A javításhoz egyszerűen csak a Home vagy a Work hálózatra kell váltania. Alternatívaként a hálózati ellenőrzést kihagyhatja az alábbiak szerint:
Engedélyezés-PSRemoting -SkipNetworkProfileCheck
Javasoljuk azonban, hogy inkább módosítsa hálózati helyét.
A PowerShell segítségével kétféle módon lehet csatlakozni egy másik géphez. Van egy egy-egy módszer, amely nagyon hasonlít az SSH használatára, és ott van az egyik a sok módszer.
PowerShell munkamenet használata
A PowerShell segítségével a távoli géphez való csatlakozás első módja valamilyen PowerShell Session nevű eszköz használata. A munkamenet egyszerűen lehetővé teszi a parancsok távoli gépen történő futtatását interaktív módon ugyanúgy, mint a saját gépén. Egy munkamenet megnyitásához egyszerűen írja be a következőket:
Enter-PSSession -KomputerName "Darlah"
A prompt kap egy előtagot, amely jelzi a gépet, amelyen a cmdleteket futtatja.
Innen igazán kezelheti a parancsot, mintha a távoli gépen ülne. Ha például a C: \ meghajtó összes fájlját meg szeretné tekinteni, akkor egyszerűen elvégezhet:
Get-ChildItem -Path C: \
Ha Linux-háttérből származik, akkor gondolhat arra, hogy ezt az egyik-másik módszert használja a remontoláshoz, mint az SSH PowerShell alternatívája.
Invoke-Command
használata A másik módja a PowerShell egy távoli gépen történő használata az Invoke-Command segítségével. Az Invoke-Command használatának az az előnye, hogy ugyanazt a parancsot egyszerre több gépen is végrehajthatja. Amint el lehet képzelni, ez különösen akkor hasznos, ha valami olyasmit szeretne tenni, mint a szerverekről eseménynapló.Az Invoke-Command a következő szintaxist követi:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock{ Get-EventLog alkalmazás-legkevésbé 2}
Mivel a parancs párhuzamosan fut minden gépen, szükség lesz valamilyen módon,az adott eredmény származik. Ezt a PSComputerName tulajdonság megtekintésével teheti meg.
Az Invoke-Command használata esetén már nincsenek olyan tárgyai, amelyek a Pipeline-ban várhatóak. Látja, hogy ahhoz, hogy a PowerShell visszaszerezhesse a távoli gépről az adatokat a gépére, szükség van valamilyen módon arra, hogy a távoli gépen futó parancs objektumait megjelenítse. Manapság úgy tűnik, hogy a hierarchikus adatstruktúra képviseletének választott módja az XML használata, ami azt jelenti, hogy amikor parancsot ad ki az Invoke-Command használatával, az eredményeket először XML-be sorba rendezzük, mielőtt visszaállítanánk a készülékre. Miután visszajutnak a gépedre, egy objektumba visszavezetik őket;az a dolog, hogy amikor deserializációra kerülnek, minden módszer, kivéve a ToString() metódust, eltávolítja az objektumtól.
Megjegyzés: Van néhány kivétel ennek a szabálynak, például a leginkább primitív típusok, mint pl. Az egész számok, el lehet távolítani a módszerekkel. Van egy olyan folyamat is, amelyet Rehydration-nek hívnak, ahol bizonyos módszereket vissza lehet adni a deserializált objektumokhoz. Szóval légy óvatos és emlékezz rá, hogy a Get-Member a barátod.
Házi feladat
- Olvassa el a PowerShell Remoting ebook titkait Don Jones-től.