A PowerShell moduláris felépítésű. A PowerShell 1.0 verzióban az egyes cmdletek és providerek különböző snapin-eknek voltak köszönhetők. A snapinek általában dll fájlok, és a registry-ben kell őket regisztrálni a PowerShell számára. Egy ilyen snapin regisztrációjának lenyomata valahogy így néz ki:
67 . ábra Snapin regisztrációja
Ezt természetesen nem nekünk, manuálisan kell bejegyezni, hanem a snapin gyártója általában biztosít valamilyen telepítőt, ami ezt megteszi. Ha van ilyen szépen előkészített snapinünk, akkor – ha a telepítője valamilyen egyéb módon nem integrálja be a PowerShell konzolba – a Add‑PSSnapin cmdlettel be tudjuk építeni a PowerShell konzolba.
Snapinekből már eleve több van a PowerShellben, és ezeket a „gyári” snapineket nem kell külön regisztrálni. A snapinek lekérdezhetők a get-pssnapin cmdlettel:
[2] PS C:\> Get-PSSnapin
Name : Microsoft.PowerShell.Diagnostics
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains Windows Eventing and
Performance Counter cmdlets.
Name : Microsoft.WSMan.Management
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains cmdlets (such as Get-
WSManInstance and Set-WSManInstance) that are used by the Wind
ows PowerShell host to manage WSMan operations.
Name : Microsoft.PowerShell.Core
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains cmdlets used to manag
e components of Windows PowerShell.
Name : Microsoft.PowerShell.Utility
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains utility Cmdlets used
to manipulate data.
Name : Microsoft.PowerShell.Host
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains cmdlets (such as Star
t-Transcript and Stop-Transcript) that are provided for use wi
th the Windows PowerShell console host.
Name : Microsoft.PowerShell.Management
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains management cmdlets us
ed to manage Windows components.
Name : Microsoft.PowerShell.Security
PSVersion : 2.0
Description : This Windows PowerShell snap-in contains cmdlets to manage Win
dows PowerShell security.
Snap-inekkel kapcsolatos egyéb cmdletek:
[3] PS I:\>Get-Command -noun pssnapin
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-PSSnapin Add-PSSnapin [-Name] <Stri...
Cmdlet Get-PSSnapin Get-PSSnapin [[-Name] <Str...
Cmdlet Remove-PSSnapin Remove-PSSnapin [-Name] <S...
Azaz hozzá lehet adni (Add-PSSnapin) ezeket, le lehet kérdezni (Get-PSSnapin), és el lehet távolítani (Remove-PSSnapin ).
Még azt is megnézhetjük, hogy az egyes cmdletek melyik snapinben tanyáznak:
[17] PS C:\> get-command -commandtype cmdlet | Group-Object pssnapin | ft -wr
ap
Count Name Group
----- ---- -----
79 Microsoft.PowerShell.Mana {Add-Computer, Add-Content, Checkpoint-Compu
gement ter, Clear-Content...}
41 Microsoft.PowerShell.Core {Add-History, Add-PSSnapin, Clear-History, D
isable-PSSessionConfiguration...}
87 Microsoft.PowerShell.Util {Add-Member, Add-Type, Clear-Variable, Compa
ity re-Object...}
13 Microsoft.WSMan.Managemen {Connect-WSMan, Disable-WSManCredSSP, Discon
t nect-WSMan, Enable-WSManCredSSP...}
10 Microsoft.PowerShell.Secu {ConvertFrom-SecureString, ConvertTo-SecureS
rity tring, Get-Acl, Get-AuthenticodeSignature...
}
4 Microsoft.PowerShell.Diag {Export-Counter, Get-Counter, Get-WinEvent,
nostics Import-Counter}
2 Microsoft.PowerShell.Host {Start-Transcript, Stop-Transcript}
Mikor lehet erre szükség? Az alap snap-ineket nem lehet eltávolítani, de találkozhatunk olyan kiegészítésekkel különböző szoftverek által, amelyeket esetleg ki lehet kapcsolni, vagy éppen az alap PowerShell alkalmazáshoz hozzá lehet adni.
Snap-inekkel kapcsolatos változtatások sem időt állók, azaz ha becsukjuk a PowerShell ablakot és újra megnyitjuk, akkor megint az alaphelyzet szerinti snap-inek köszönnek vissza. Ezek automatikus visszatöltéséhez majd a PS konzolfájlok segítenek (ld. 2.1.9 Konzolfájl )
Az „alap” PSSnapineken kívüli egyéb bővítményeket a következő módon tudjuk kilistázni:
PS C:\> Get-PSSnapin -Registered
Name : PowerGUI
PSVersion : 1.0
Description :