6Sep

Geek Iskola: megtanulják használni Remoting a PowerShell

click fraud protection

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.

instagram viewer

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.