A rendszergazdák egyik gyakori tevékenysége a számítógépekkel, számítógép-fiókokkal kapcsolatos. Erre a PowerShell 2.0-ban már rendelkezésre állnak cmdletek.
A számítógép tartományba vagy munkacsoportba való léptetéséhez az Add-Computer cmdletet használhatjuk. Munkacsoportba léptetése esetén:
PS C:\Users\Administrator> Add-Computer -WorkGroupName WG
WARNING: The changes will take effect after you restart the computer MEMBER.
Maga a parancs nem indítja újra a gépet, de figyelmeztet, hogy a változások csak újraindítás után jutnak érvényre. Újraindítani a Restart-Computer cmdlettel lehet:
PS C:\Users\Administrator> Restart-Computer
Tartományba léptetéshez ugyancsak az Add-Computer használatos, de természetesen más paraméterezéssel:
PS C:\> Add-Computer -DomainName "r2.dom" -Credential r2\administrator -OUPath
"ou=managed users,dc=r2,dc=dom"
WARNING: The changes will take effect after you restart the computer MEMBER.
Látható, hogy megadható a szervezeti egység, ahol a tartományi számítógépfiók létrejön. Menet közben még a megadott rendszergazda fiók jelszavát is bekéri a parancs. Ha nem akarjuk a grafikus felületen interaktívan megadni a jelszót, akkor a hitelesítési adatokat külön objektumként létre kell hozni. Ehhez nézzük a tartományból kiléptetés példáját a remove-computer cmdlet példáján:
PS C:\Users\Administrator> $cred = new-object -typename System.Management.Autom
ation.PSCredential -argumentlist "r2\administrator", ( Convertto-SecureString '
Pa$$w0rd' -force -asplaintext)
PS C:\Users\Administrator> Remove-Computer -Credential $cred
Confirm
After you leave the domain, you will need to know the password of the local
Administrator account to log onto this computer. Do you want to remove this
computer from the domain?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
WARNING: The changes will take effect after you restart the computer MEMBER.
A fenti példában látszik, hogy egy $cred változóba létrehozok egy System.Management.Automation.PSCredential objektumot, a konstruktor paramétereként megadom a felhasználó nevét és a jelszavát SecureString formátumban, amit a ConvertTo-SecureString cmdlet végez el.
Megjegyzés
A SecureString-et vissza is vissza lehet alakítani „sima” szöveggé a következő módon:
PS C:\> $pwd = ConvertTo-SecureString "kakukk1" -AsPlainText -Force
PS C:\> (New-Object System.Management.Automation.PSCredential('dummy',$pwd)).Ge
tNetworkCredential().password
kakukk1
Egy másik módszer a visszafordításra:
PS C:\> [Runtime.InteropServices.Marshal]::PtrToStringAuto( [Runtime.InteropSer
vices.Marshal]::SecureStringToBSTR( $pwd ))
kakukk1
Számítógépet leállítani a Stop-Computer cmdlettel lehet:
[89] PS C:\> Stop-Computer -ComputerName member
Itt most ennek a parancsnak azt a változatát mutattam, amellyel távoli futtatást alkalmaztam. A fenti parancsok ilyen paraméterezéssel futtathatók távoli módon és akár háttérfolyamatként is.
Bár a főnevében nem számítógép, hanem kapcsolat, de azért mégis a számítógépekhez köthető leggyakrabban a Test-Connection cmdlet, mely az ősi „ping” segédprogram PowerShelles megfelelője. Nézzük, mit tud:
[36] PS C:\> Test-Connection member
WARNING: 2 columns do not fit into the display and were removed.
Source Destination IPV4Address IPV6Address
------ ----------- ----------- -----------
DC member 192.168.1.11 {}
DC member 192.168.1.11 {}
DC member 192.168.1.11 {}
DC member 192.168.1.11 {}
(Sajnos a könyv méretadottságai miatt 2 oszlop lemaradt: az átküldött bájtok száma és a válaszidő.) Eddig ez egy ping eredményére hasonlít. Miben tud ez többet? Például abban, hogy ha csak a kapcsolat meglétét akarjuk ellenőrizni, nincs szükségünk részletes statisztikára, akkor kérhetünk egy nagyon tömör visszatérési értéket is:
[38] PS C:\> Test-Connection member -Quiet
True
Ilyenkor csak egy True/False választ kapunk. De még ennél is többet tud ez! Egyrészt több gépet is meg lehet „pingelni” egyszerre:
[39] PS C:\> Test-Connection -ComputerName member, dc
WARNING: 2 columns do not fit into the display and were removed.
Source Destination IPV4Address IPV6Address
------ ----------- ----------- -----------
DC dc 192.168.1.10 fe80::f9d9:a919:495d:a8fb%11
DC member 192.168.1.11 {}
DC dc 192.168.1.10 fe80::f9d9:a919:495d:a8fb%11
DC member 192.168.1.11 {}
DC dc 192.168.1.10 fe80::f9d9:a919:495d:a8fb%11
DC member 192.168.1.11 {}
DC dc 192.168.1.10 fe80::f9d9:a919:495d:a8fb%11
DC member 192.168.1.11 {}
Másrészt nem feltétlenül kell, hogy az a gép legyen a forrás, ahol épp ülünk, távoli gépről még távolabbi gépre is kezdeményezhetjük a pinget:
[48] PS C:\> Test-Connection -Source Member -ComputerName "192.168.1.200"
WARNING: 2 columns do not fit into the display and were removed.
Source Destination IPV4Address IPV6Address
------ ----------- ----------- -----------
MEMBER 192.168.1.200 192.168.1.200 {}
MEMBER 192.168.1.200 192.168.1.200 {}
MEMBER 192.168.1.200 192.168.1.200 {}
MEMBER 192.168.1.200 192.168.1.200 {}
A fenti példában én a DC nevű gépen dolgozom, de a Member nevű gép kapcsolatát szeretném ellenőrizni a 192.168.1.200-as címen található eszközzel. Ebben az esetben a mélyen az én gépem felvette a kapcsolatot a Member gép WMI interfészével, és azt kérte meg a ping kiadására. Ilyen esetben szükséges lehet autentikáltatni magunkat ezzel a géppel, ha az éppen belépett felhasználó nem jogosult a WMI felület elérésére. Erre a –Credential paraméter megadása biztosít lehetőséget.
Még „szorosabb” kapcsolatot tesztel a Test-ComputerSecureChannel cmdlet. Ezzel a tartományi gépek közti biztonságos, titkosított adatcsatorna meglétét és működőképességét lehet tesztelni:
[49] PS C:\> Test-ComputerSecureChannel -Server member
True
Ha esetleg ez a kapcsolat sérült lenne, akkor ezen cmdlet –repair kapcsolójával lehet megjavítani azt.
Még talán ebbe a fejezetbe sorolható a gépre telepített javítások listázását végző Get-HotFix cmdlet:
[7] PS C:\> Get-HotFix | Sort-Object installedon -Descending
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
TIBI-PC Update KB978637 NT AUTHORITY\SYSTEM 2010.02.2...
TIBI-PC Update KB977863 NT AUTHORITY\SYSTEM 2010.02.2...
TIBI-PC Update KB976662 NT AUTHORITY\SYSTEM 2010.02.2...
TIBI-PC Update KB979306 NT AUTHORITY\SYSTEM 2010.02.2...
TIBI-PC Update KB976264 NT AUTHORITY\SYSTEM 2010.02.2...
TIBI-PC Security Update KB978251 NT AUTHORITY\SYSTEM 2010.02.1...
…
Ezt távoli gépre is tudjuk futtatni.
Szintén ide tartozik a Reset-ComputerMachinePassword cmdlet, mellyel a számítógép jelszavának módosítását lehet kezdeményezni. Ez a parancs csak helyi gépre működik.