Megosztás a következőn keresztül:


PowerShell távoli eljáráshívás – gyakori kérdések

Ha távolról dolgozik, parancsokat ír be a PowerShellbe egy számítógépen (ez a "helyi számítógép"), de a parancsok egy másik számítógépen (más néven "távoli számítógépen") futnak. A távoli munkavégzés élményének olyannak kell lennie, mintha közvetlenül a távoli számítógépen dolgozik, amennyire csak lehetséges.

Megjegyzés

A PowerShell-remoting használatához a távoli számítógépet újra kell konfigurálni. További információkért lásd: about_Remote_Requirements.

Mindkét számítógépen telepítve kell lennie a PowerShellnek?

Igen. A távoli munkavégzéshez a helyi és távoli számítógépeknek PowerShell-lel, a Microsoft .NET-keretrendszersel és a Web Services for Management (WS-Management) protokollval kell rendelkezniük. Az adott parancs végrehajtásához szükséges fájloknak és egyéb erőforrásoknak a távoli számítógépen kell lenniük.

A Windows PowerShell 3.0-t és a Windows PowerShell 2.0-t futtató számítógépek távolról csatlakozhatnak egymáshoz, és távoli parancsokat futtathatnak. Egyes funkciók, például a munkamenetről való leválasztás és az újracsatlakozás csak akkor működnek, ha mindkét számítógép Windows PowerShell 3.0-t futtat.

Rendelkeznie kell engedéllyel a távoli számítógéphez való csatlakozáshoz, a PowerShell futtatásához, valamint az adattárak (például fájlok és mappák) és a távoli számítógépen található beállításjegyzék eléréséhez.

További információkért lásd: about_Remote_Requirements.

Hogyan működik az újraküldés?

Távoli parancs elküldésekor a rendszer a hálózaton keresztül továbbítja a parancsot a távoli számítógépen található PowerShell-motornak, és a távoli számítógépen a PowerShell-ügyfélen fut. A parancs eredményeit a rendszer visszaküldi a helyi számítógépre, és megjelenik a helyi számítógépen a PowerShell-munkamenetben.

A parancsok továbbításához és a kimenet fogadásához a PowerShell a WS-Management protokollt használja. A WS-Management protokollról további információt a Windows dokumentációjában WS-Management Protokoll című témakörben talál.

A Windows PowerShell 3.0-tól kezdve a PowerShell távoli munkamenet-információkat tárol a távoli számítógépen. Így leválaszthatja a munkamenetet, és újracsatlakozhat egy másik munkamenetből vagy egy másik számítógépről anélkül, hogy megszakítaná a parancsokat, vagy elveszítené az állapotát.

Biztonságos a PowerShell-remoting?

Amikor távoli számítógéphez csatlakozik, a rendszer a helyi számítógépen található felhasználónév és jelszó hitelesítő adatait vagy a parancsban megadott hitelesítő adatokat használja a távoli számítógépre való bejelentkezéshez. A hitelesítő adatok és az átvitel többi része titkosítva van.

A védelem növelése érdekében konfigurálhatja a távoli számítógépet úgy, hogy a Windows Remote Management (WinRM) kéréseihez HTTP helyett SSL-t használjon. Ezután a felhasználók a , Invoke-Commandés New-PSSession parancsmagok Enter-PSSession paraméterét használhatják a kapcsolat létrehozásakor. Ez a beállítás a HTTP helyett a biztonságosabb HTTPS-csatornát használja.

Minden távoli parancshoz szükség van a PowerShell újraegyezésre?

Nem. Egyes parancsmagok ComputerName paraméterrel rendelkeznek, amely lehetővé teszi objektumok lekérését a távoli számítógépről.

Ezek a parancsmagok nem használják a PowerShell-remotingot. Ezeket bármely PowerShellt futtató számítógépen használhatja. A következő parancsmagok nem igényelnek PowerShell távoli elérést:

  • Get-HotFix
  • Rename-Computer
  • Restart-Computer
  • Stop-Computer

Az ComputerName paraméterrel rendelkező parancsmagok megkereséséhez írja be a következőt:

Get-Help * -Parameter ComputerName
# or
Get-Command -ParameterName ComputerName

Annak megállapításához, hogy egy adott parancsmag ComputerName paramétere PowerShell-újraküldést igényel-e, tekintse meg a paraméter leírását. A paraméter leírásának megjelenítéséhez írja be a következőt:

Get-Help <cmdlet-name> -Parameter ComputerName

Például:

Get-Help Get-HotFix -Parameter ComputerName

Minden más parancshoz használja a Invoke-Command parancsmagot.

Hogyan futtathatok parancsokat távoli számítógépen?

Ha távoli számítógépen szeretne parancsot futtatni, használja a Invoke-Command parancsmagot. Csatolja a parancsot kapcsos zárójelekbe ({}). A parancs megadásához használja a Invoke-Command paraméterét.

Távoli számítógép megadásához használja a ComputerName paramétert Invoke-Command . Vagy létrehozhat egy állandó kapcsolatot egy távoli számítógéppel (munkamenet), majd a Invoke-Command paraméterével futtathatja a parancsot a munkamenetben.

Az alábbi parancsok például távolról futtatnak egy Get-Process parancsot.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-Process}

#  - OR -

Invoke-Command -Session $s -ScriptBlock {Get-Process}

Távoli parancs megszakításához írja be a CtrlC+. A megszakítási kérelmet a rendszer átadja a távoli számítógépnek, ahol leállítja a távoli parancsot.

További információ a távoli parancsokról a about_Remote-ban és a távoli végrehajtást támogató parancsmagok súgójában található.

Be tudok-e telnetet létesíteni egy távoli számítógépre?

A Enter-PSSession parancsmaggal interaktív munkamenetet indíthat távoli számítógéppel.

A PowerShell-parancssorba írja be a következőt:

Enter-PSSession <ComputerName>

A parancssor úgy változik, hogy a távoli számítógéphez csatlakozik.

<ComputerName>\C:>

A megadott parancsok úgy futnak a távoli számítógépen, mintha közvetlenül a távoli számítógépen adták meg őket.

Az interaktív munkamenet befejezéséhez írja be a következőt:

Exit-PSSession

Az interaktív munkamenet egy állandó munkamenet, amely a WS-Management protokollt használja. Ez nem ugyanaz, mint a Telnet használata, de hasonló élményt nyújt.

További információ: Enter-PSSession.

Létrehozhatok állandó kapcsolatot?

Igen. Távoli parancsokat a távoli számítógép nevének, NetBIOS-nevének vagy IP-címének megadásával futtathat. Távoli parancsokat is futtathat a távoli számítógéphez csatlakoztatott PowerShell-munkamenet (PSSession) megadásával.

Ha a vagy Invoke-CommandEnter-PSSession paraméterét használja, a PowerShell ideiglenes kapcsolatot hoz létre. A PowerShell a kapcsolatot csak az aktuális parancs futtatására használja, majd bezárja a kapcsolatot. Ez a viselkedés jól működik egyetlen vagy több nem kapcsolódó parancs futtatásához, még sok távoli számítógépen is.

Ha a New-PSSession parancsmaggal hoz létre PSSessiont, a PowerShell állandó kapcsolatot hoz létre a PSSession számára. Ezután több parancsot is futtathat a PSSession szolgáltatásban, beleértve az adatokat megosztó parancsokat is.

Általában pssessiont hoz létre, amely több kapcsolódó parancs futtatására is lehetőséget ad, amelyek adatokat osztanak meg. Ellenkező esetben a ComputerName paraméter által létrehozott ideiglenes kapcsolat elegendő a legtöbb parancshoz.

További információ a munkamenetekről: about_PSSessions.

Egyszerre több számítógépen is futtathatok parancsokat?

Igen. A parancsmag Invoke-Command paramétere több számítógépnevet fogad el, a Munkamenet paraméter pedig több PSSessiont fogad el.

Ha Invoke-Command parancsot futtat, a PowerShell az összes megadott számítógépen vagy az összes megadott PSSessionsban futtatja a parancsokat.

A PowerShell több száz egyidejű távoli kapcsolatot képes kezelni. Az elküldhető távoli parancsok számát azonban korlátozhatja a számítógép erőforrásai és a több hálózati kapcsolat létesítésére és fenntartására vonatkozó kapacitása.

További információkért tekintse meg a súgócikkben található Invoke-Command példát.

Hol találhatók a profiljaim?

A PowerShell-profilok nem futnak automatikusan a távoli munkamenetekben, így a profil által hozzáadott parancsok nem jelennek meg a munkamenetben. Emellett az $PROFILE automatikus változó nem töltődik fel távoli munkamenetekben.

Profil munkamenetben való futtatásához használja a Invoke-Command parancsmagot.

Az alábbi parancs például a CurrentUserCurrentHost profilt futtatja a helyi számítógépről a $smunkamenetében.

Invoke-Command -Session $s -FilePath $PROFILE

Az alábbi parancs a CurrentUserCurrentHost profilt futtatja a távoli számítógépről a $smunkamenetében.

Invoke-Command -Session $s {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

A parancs futtatása után a profil által a munkamenethez hozzáadott parancsok elérhetők a következő helyen $s: .

A munkamenet-konfigurációban egy indítási szkripttel is futtathat profilt minden olyan távoli munkamenetben, amely a munkamenet-konfigurációt használja.

További információ a PowerShell-profilokról: about_Profiles. További információ a munkamenet-konfigurációkról: Register-PSSessionConfiguration.

Hogyan működik a szabályozás távoli parancsokon?

A helyi számítógépen található erőforrások kezeléséhez a PowerShell tartalmaz egy parancsonkénti szabályozási funkciót, amely lehetővé teszi az egyes parancsokhoz létrehozott egyidejű távoli kapcsolatok számának korlátozását.

Az alapértelmezett érték 32 egyidejű kapcsolat, de a parancsmagok ThrottleLimit paraméterével egyéni szabályozáskorlátot állíthat be adott parancsokhoz.

A szabályozás funkció minden parancsra vonatkozik, nem a teljes munkamenetre vagy a számítógépre. Ha egyszerre több munkamenetben vagy PSSessions-ban futtat parancsokat, az egyidejű kapcsolatok száma az összes munkamenet egyidejű kapcsolatainak összege.

Ha ThrottleLimit paraméterrel rendelkező parancsmagokat szeretne keresni, írja be a következőt:

Get-Help * -Parameter ThrottleLimit
-or-
Get-Command -ParameterName ThrottleLimit

A távoli parancsok kimenete eltér a helyi kimenettől?

A PowerShell helyi használata esetén "élő" .NET-keretrendszerobjektumokat küld és fogad; Az "élő" objektumok olyan objektumok, amelyek a tényleges programokhoz vagy rendszerösszetevőkhöz vannak társítva. Amikor meghívja a metódusokat, vagy módosítja az élő objektumok tulajdonságait, a módosítások hatással vannak a tényleges programra vagy összetevőre. Amikor egy program vagy összetevő tulajdonságai megváltoznak, az őket ábrázoló objektum tulajdonságai is megváltoznak.

Mivel azonban a legtöbb élő objektum nem továbbítható a hálózaton keresztül, a PowerShell szerializálja a távoli parancsok által visszaadott objektumokat. A szerializálás az egyes objektumokat common language infrastructure XML (CLIXML) adatelemekké alakítja az átvitelhez.

Amikor a PowerShell szerializált objektumot kap, deszerializált objektumtípussá alakítja a CLIXML-et. A deszerializált objektum az objektum tulajdonságainak pontos rekordja, de már nem élő objektum. A deszerializált objektum nem rendelkezik metódusokkal, mert már nem hatékonyak.

A deszerializált objektumokat általában ugyanúgy használhatja, mint az élő objektumokat, de tisztában kell lennie a korlátozásokkal. Emellett a visszaadott Invoke-Command objektumok további tulajdonságokkal is rendelkeznek, amelyek segítenek meghatározni a parancs eredetét.

Egyes objektumtípusok, például a DirectoryInfo-objektumok és a GRAFIKUS GUID-k vissza lesznek alakítva élő objektumokká a fogadásukkor. Ezekhez az objektumokhoz nincs szükség speciális kezelésre vagy formázásra.

A távoli kimenet értelmezéséről és formázásáról további információt about_Remote_Output.

Futtathatok távoli háttérfeladatokat?

Igen. A PowerShell-háttérfeladatok olyan PowerShell-parancsok, amelyek aszinkron módon futnak a munkamenet használata nélkül. Háttérfeladat indításakor a parancssor azonnal visszatér. Folytathatja a munkát a munkamenetben a feladat futtatása közben.

A háttérfeladatokat akkor is elindíthatja, ha más parancsok futnak, mert a háttérfeladatok mindig aszinkron módon futnak egy ideiglenes munkamenetben.

Háttérfeladatokat helyi vagy távoli számítógépen is futtathat. Alapértelmezés szerint egy háttérfeladat fut a helyi számítógépen. A parancsmag Invoke-Command paraméterével azonban bármilyen távoli parancsot futtathat háttérfeladatként. A Invoke-Command használatával pedig távolról is futtathat Start-Job parancsokat.

További információ a PowerShell háttérfeladatairól: about_Jobs és about_Remote_Jobs.

Futtathatok Windows-programokat távoli számítógépen?

A Távoli PowerShell-parancsokkal Windows-alapú programokat futtathat távoli számítógépeken. Futtathat például Shutdown.exe vagy Ipconfig.exe távoli számítógépen.

A PowerShell-parancsokkal azonban nem nyithatja meg a felhasználói felületet egy távoli számítógépen lévő programhoz.

Ha egy Windows-programot indít egy távoli számítógépen, a PowerShell parancssor csak akkor tér vissza, amikor a program befejeződik, vagy amikor a Ctrl+C billentyűkkel megszakítja a parancsot. Ha például távoli számítógépen futtatja a ipconfig.exe programot, a parancssor csak akkor tér vissza, ha ipconfig.exe befejeződött.

Ha távoli parancsokkal indít el egy felhasználói felülettel rendelkező programot, elindul a programfolyamat, de a felhasználói felület nem jelenik meg. A program továbbra is fut. A parancssor csak akkor jelenik meg, ha leállítja a programot, vagy nyomja le a CtrlC+, amely megszakítja a parancsot, és leállítja a folyamatot.

Ha például Egy PowerShell-parancsot használ egy távoli számítógépen való futtatáshoz Notepad , a Jegyzettömb folyamat a távoli számítógépen indul el, de a Jegyzettömb felhasználói felülete nem jelenik meg. A parancs megszakításához és a parancssor visszaállításához nyomja le a CtrlC+.

Korlátozhatjam azokat a parancsokat, amelyeket a felhasználók távolról futtathatnak a számítógépen?

Igen. Minden távoli munkamenetnek a távoli számítógépen található munkamenet-konfigurációk egyikét kell használnia. A munkamenet-konfigurációkat a számítógépen kezelheti. A munkamenet-konfigurációkhoz engedélyeket állíthat be, így korlátozhatja, hogy ki futtathat távolról parancsokat a számítógépen. Azt is korlátozhatja, hogy mely parancsok futtathatók.

A munkamenet-konfiguráció konfigurálja a munkamenet környezetét. A konfigurációt egy új konfigurációs osztályt implementáló szerelvény vagy a munkamenetben futó szkript használatával határozhatja meg. A konfiguráció meghatározhatja a munkamenetben elérhető parancsokat. A konfiguráció olyan beállításokat is tartalmazhat, amelyek védik a számítógépet, például olyan beállításokat, amelyek korlátozzák a munkamenet által távolról fogadott adatok mennyiségét egyetlen objektumban vagy parancsban. Megadhat egy biztonsági leírót is, amely meghatározza a konfiguráció használatához szükséges engedélyeket.

A Enable-PSRemoting parancsmag létrehozza az alapértelmezett munkamenet-konfigurációkat a számítógépen: Microsoft.PowerShell, Microsoft.PowerShell.Workflow és Microsoft.PowerShell32 (csak 64 bites operációs rendszerek). Enable-PSRemoting a konfiguráció biztonsági leíróját úgy állítja be, hogy csak a számítógép Rendszergazdák csoportjának tagjai használják őket.

A munkamenet-konfigurációs parancsmagokkal szerkesztheti az alapértelmezett munkamenet-konfigurációkat, új munkamenet-konfigurációkat hozhat létre, és módosíthatja az összes munkamenet-konfiguráció biztonsági leíróit.

A Windows PowerShell 3.0-tól kezdve a New-PSSessionConfigurationFile parancsmag lehetővé teszi egyéni munkamenet-konfigurációk létrehozását szövegfájl használatával. A fájl a nyelvi mód beállítására és a munkamenet-konfigurációt használó munkamenetekben elérhető parancsmagok és modulok megadására szolgáló beállításokat tartalmaz.

Amikor a felhasználók a Invoke-Command, New-PSSessionvagy Enter-PSSession parancsmagokat használják, a ConfigurationName paraméter használatával jelezhetik a munkamenethez használt munkamenet-konfigurációt. Emellett módosíthatják a munkameneteik által használt alapértelmezett konfigurációt a munkamenet $PSSessionConfigurationName beállítási változójának értékének módosításával.

A munkamenet-konfigurációkkal kapcsolatos további információkért tekintse meg a munkamenet-konfigurációs parancsmagok súgóját. A munkamenet-konfigurációs parancsmagok megkereséséhez írja be a következőt:

Get-Command *PSSessionConfiguration

Mik azok a ventilátorok és ventilátorok konfigurációi?

A powershell-remoting leggyakoribb forgatókönyve több számítógép esetén az egy-a-többhöz konfiguráció, amelyben egy helyi számítógép (a rendszergazda számítógépe) számos távoli számítógépen Futtat PowerShell-parancsokat. Ezt nevezzük "kirakott" forgatókönyvnek.

Egyes vállalatoknál azonban a konfiguráció több az egyhez, ahol sok ügyfélszámítógép csatlakozik egyetlen, PowerShellt futtató távoli számítógéphez, például egy fájlkiszolgálóhoz vagy egy kioszkhoz. Ezt nevezik "beillő" konfigurációnak.

A PowerShell-remoting támogatja a ki- és a ventilátor-konfigurációkat is.

A kikapcsoló konfigurációhoz a PowerShell a Web Services for Management (WS-Management) protokollt és a WS-Management Microsoft-implementációját támogató WinRM szolgáltatást használja. Amikor egy helyi számítógép csatlakozik egy távoli számítógéphez, WS-Management kapcsolatot létesít, és a PowerShell beépülő modul használatával elindítja a PowerShell-gazdagépfolyamatot (Wsmprovhost.exe) a távoli számítógépen. A felhasználó megadhat egy másik portot, egy másik munkamenet-konfigurációt és más funkciókat a távoli kapcsolat testreszabásához.

A "fan-in" konfiguráció támogatásához a PowerShell az Internet Information Services (IIS) használatával üzemelteti a WS-Managementet, betölti a PowerShell beépülő modult, és elindítja a PowerShellt. Ebben a forgatókönyvben ahelyett, hogy minden PowerShell-munkamenetet külön folyamatba indítanál, minden PowerShell-munkamenet ugyanabban a gazdagépfolyamatban fut.

Az IIS-üzemeltetés és a ventilátoros távfelügyelet nem támogatott Windows XP-ben vagy Windows Server 2003-ban.

A ventilátor konfigurációjában a felhasználó megadhat egy kapcsolati URI-t és egy HTTP-végpontot, beleértve az átvitelt, a számítógép nevét, a portot és az alkalmazás nevét. Az IIS a megadott alkalmazásnévvel rendelkező összes kérelmet továbbítja az alkalmazásnak. Az alapértelmezett a WS-Management, amely képes a PowerShell üzemeltetésére.

Megadhatja a hitelesítési mechanizmust is, és tilthatja vagy engedélyezheti a HTTP- és HTTPS-végpontokról való átirányítást.

Tesztelhetem az újraegyezést egyetlen számítógépen, nem tartományban?

Igen. A PowerShell-remoting akkor is elérhető, ha a helyi számítógép nincs tartományon belül. Az újraformálási funkciókkal csatlakozhat a munkamenetekhez, és munkameneteket hozhat létre ugyanazon a számítógépen. A funkciók ugyanúgy működnek, mint amikor távoli számítógéphez csatlakozik.

Ha távoli parancsokat szeretne futtatni egy munkacsoportban lévő számítógépen, módosítsa a következő Windows-beállításokat a számítógépen.

Figyelem: Ezek a beállítások a rendszer összes felhasználójára hatással vannak, és sebezhetőbbé tehetik a rendszert egy rosszindulatú támadással szemben. A módosítások végrehajtásakor körültekintően járjon el.

  • Windows Vista, Windows 7, Windows 8:

    Hozza létre a következő beállításjegyzék-bejegyzést, majd állítsa az értékét 1-re: LocalAccountTokenFilterPolicy a HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

    Ezt a bejegyzést a következő PowerShell-paranccsal veheti fel:

    $parameters = @{
      Path='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
      Name='LocalAccountTokenFilterPolicy'
      propertyType='DWord'
      Value=1
    }
    New-ItemProperty @parameters
    
  • Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:

    A hálózati hozzáférés alapértelmezett beállítása: A helyi fiókszabályzat megosztási és biztonsági modellje.Classic Ellenőrizze, hogy a beállítás be van-e állítva Classic.

Futtathatok távoli parancsokat egy másik tartományban lévő számítógépen?

Igen. A parancsok általában hiba nélkül futnak. Előfordulhat azonban, hogy hitelesítő paramétert kell használnia a Invoke-Command, New-PSSession, vagy Enter-PSSession parancsmagokkal. A hitelesítő adatokra akkor is szükség lehet, ha az aktuális felhasználó tagja a Helyi és távoli számítógépek Rendszergazdák csoportjának.

Ha azonban a távoli számítógép nem olyan tartományban található, amelyet a helyi számítógép megbízik, előfordulhat, hogy a távoli számítógép nem tudja hitelesíteni a felhasználó hitelesítő adatait.

A hitelesítés engedélyezéséhez a következő paranccsal vegye fel a távoli számítógépet a WinRM helyi számítógépének megbízható gazdagépeinek listájára. Írja be a parancsot a PowerShell-parancssorba.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <Remote-computer-name>

Ha például hozzá szeretné adni a Server01 számítógépet a helyi számítógépen található megbízható gazdagépek listájához, írja be a következő parancsot a PowerShell-parancssorba:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value Server01

Támogatja a PowerShell az SSH-val való újraegyezést?

Igen. További információ: PowerShell-távoli kezelés SSH-n keresztül.