Jóváhagyás kezelése, óvatos végrehajtás

A PowerShell parancsai között lehetnek „veszélyesek” is. Például egy fájl törlése, ha azt véletlenül, egy hibás kifejezés miatt követjük el, akkor annak nem biztos, hogy örülünk. Ezért az egyes cmdleteknél gyárilag meg van határozva egy veszélyességi szint, ami lehet Low, Medium, High.

Nézzük is meg, hogy mi van beállítva! Ez egy elég bonyolult kifejezés, így kérem a tisztelt olvasót ne dobja itt el a könyvet! Ha majd a 2.5 Fejlett függvények – script cmdletek fejezethez érünk minden világos lesz.

Get-Command -CommandType cmdlet |

foreach-object {New-Object System.Management.Automation.CommandMetaData ($_)} |

          select-object name, confirmimpact |

                      Sort-Object confirmimpact -Descending | ft –AutoSize

Ennek eredménye:

name                              confirmimpact

----                              -------------

Enable-PSSessionConfiguration              High

Enable-PSRemoting                          High

Set-PSSessionConfiguration                 High

Unregister-PSSessionConfiguration          High

Register-PSSessionConfiguration            High

Disable-PSSessionConfiguration             High

Remove-PSBreakpoint                      Medium

Remove-Module                            Medium

Remove-PSDrive                           Medium

Azaz a cmdletek zöme Medium veszélyességűnek van besorolva és csak néhány High. Ehhez hozzá kell venni a $ConfirmPreference automatikus változót:

[1] PS C:\> $ConfirmPreference

High

Aminek az értéke „High”. Ez azt jelenti, hogy alaphelyzetben a PowerShell csak a fenti lista első 6 elemében látható cmdlet futtatására kérdez rá, a többit szó nélkül lefuttatja. Nézzünk egy rákérdezésest:

[2] PS C:\> Enable-PSRemoting

 

WinRM Quick Configuration

Running command "Set-WSManQuickConfig" to enable this machine for remote

management through WinRM service.

 This includes:

    1. Starting or restarting (if already started) the WinRM service

    2. Setting the WinRM service type to auto start

    3. Creating a listener to accept requests on any IP address

    4. Enabling firewall exception for WS-Management traffic (for http only).

 

Do you want to continue?

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help

(default is "Y"):y

WinRM already is set up to receive requests on this machine.

WinRM already is set up for remote management on this machine.

Hat különböző lehetőségünk van:

Y - Yes: hadd fusson az adott elemre.

A – Yes to All: minden elemre fusson, azaz ha egy csővezeték-feldolgozó cmdlettel van dolgunk, akkor az összes csőelemre Igen a válaszunk, amúgy elemenként rákérdezne.

N – No: Ne fusson az adott elemre.

L – No to All: egyik elemre se fusson, gyakorlatilag leállítjuk a futtatást

S – Suspend: felfüggesztjük a futtatást, és egy alpromptot nyitunk, ahol mindenfélét ellenőrizhetünk, kiolvashatunk, és ha ezzel megvagyunk, akkor dönthetünk újra, hogy mi legyen.

? – Help: felsorolja és bekéri a kötelezően kitöltendő paramétereket.

Ezek közül talán az „S” az érdekes, nézzük ezt:

[3] PS C:\> Enable-PSRemoting

 

WinRM Quick Configuration

Running command "Set-WSManQuickConfig" to enable this machine for remote

management through WinRM service.

 This includes:

    1. Starting or restarting (if already started) the WinRM service

    2. Setting the WinRM service type to auto start

    3. Creating a listener to accept requests on any IP address

    4. Enabling firewall exception for WS-Management traffic (for http only).

 

Do you want to continue?

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help

(default is "Y"):s

[4] PS C:\>>> get-date

 

2010. február 10. 15:44:56

 

 

[5] PS C:\>>> exit

 

WinRM Quick Configuration

Running command "Set-WSManQuickConfig" to enable this machine for remote

management through WinRM service.

 This includes:

    1. Starting or restarting (if already started) the WinRM service

    2. Setting the WinRM service type to auto start

    3. Creating a listener to accept requests on any IP address

    4. Enabling firewall exception for WS-Management traffic (for http only).

 

Do you want to continue?

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help

(default is "Y"):

Látható, hogy a [4]-es promptnál áttértem egy alpromptra. Itt tudok bármit futtatni anélkül, hogy az eredeti parancsomat megszakítottam volna. Ha kész vagyok, akkor ebből az alpromptból az Exit  kulcsszóval léphetek ki és ott folytathatom a válaszadást, ahol az előbb abbahagytam.

Nézzünk egy „Medium” cmdletet:

[16] PS C:\> $a = 1

[17] PS C:\> Remove-Variable a

Semmit nem kért. Ha azt szeretnénk, hogy erre is rákérdezzen, akkor két lehetőségünk van. Az egyik egy „helyi” megoldás, ami csak erre az egy parancsra fog hatni:

[18] PS C:\> $a = 1

[19] PS C:\> Remove-Variable a -Confirm

 

Confirm

Are you sure you want to perform this action?

Performing operation "Remove Variable" on Target "Name: a".

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help

(default is "Y"):y

A másik lehetőség „globális”, azaz az egész PowerShell ügyködésünkre hatással lesz:

[21] PS C:\> $ConfirmPreference = "medium"

[22] PS C:\> $a = 1

[23] PS C:\> Remove-Variable a

 

Confirm

Are you sure you want to perform this action?

Performing operation "Remove Variable" on Target "Name: a".

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help

(default is "Y"):y

Ezután minden Medium és High veszélyességű cmdletre megerősítést fog kérni. Ez a beállítás azonban csak addig él, amíg be nem csukjuk a PowerShell alkalmazást. Újra megnyitva már újból visszaáll a „High” alapbeállítás.



Word To HTML Converter