Команди в Powershell

Ще се постарая да покажа най-честите команди в конзолата Powershell.

Управление на услуги (Services)

Показване на услуги

Get-Service | Select-Object Name,Status,StartType | more

Тази конада ще подреди единa под другa всички налични услуги. Ако искаме примерно да проверим услугата "Remote Desktop Services" (TermService), то комндата ще е:

Get-Service TermService | Select-Object Name,Status,StartType Name Status StartType ---- ------ --------- TermService Stopped Manual

Управление на услуги

В управление се има в предвид, как да се стартира услугата (Автоматично/Ръчно) и стартиране на услугата в текуща сесия. Ще продължим с горния пример за TermService. Първо ще накараме услугата автоматично да се стартира след рестарт на машината, а след това ще я стартираме в текущата сесия.

Set-Service TermService -StartupType Automatic Start-Service TermService

И да проверим какво създадохме:

Get-Service TermService | Select-Object Name,Status,StartType Name Status StartType ---- ------ --------- TermService Running Automatic

Всичко е както искахме.

Управление на защитната стена (Windows Defender Firewall)

Първата задача е да проверим какви правила има в защитната стена.

Get-NetFirewallRule | select DisplayGroup | more

Достатъчно голям брой правила. Примерно ни вълнува правилата за споделяне на папки.

Get-NetFirewallRule | select DisplayGroup | Select-String 'Sharing' @{DisplayGroup=File and Printer Sharing} @{DisplayGroup=File and Printer Sharing} @{DisplayGroup=File and Printer Sharing (Restrictive)} @{DisplayGroup=File and Printer Sharing} @{DisplayGroup=File and Printer Sharing} ### Надолу има още доста правила, няма да ги показвам всичките ... @{DisplayGroup=Windows Media Player Network Sharing Service} @{DisplayGroup=Windows Media Player Network Sharing Service} @{DisplayGroup=Windows Media Player Network Sharing Service} @{DisplayGroup=Windows Media Player Network Sharing Service}

Нас ни вълнува примерно DisplayGroup=File and Printer Sharing. Да проверим самото правило за тази група.

Get-NetFirewallRule -DisplayGroup 'File and Printer Sharing'

Отново доста правила даде системата като отговор. Значи ще потърсим не по DisplayGroup, а по конкретно име DisplayName

Get-NetFirewallRule -DisplayName 'File and Printer Sharing (SMB-In)'

В случая имаме отговор за 3 правила. Отново дълъг отговор. Нужен ни прост и прегледен екран.

Get-NetFirewallRule -DisplayGroup 'File and Printer Sharing' -Direction Inbound | Select-Object -Property DisplayName,Profiles,Enabled,Action DisplayName Profiles Enabled Action ----------- -------- ------- ------ File and Printer Sharing (Spooler Service - RPC-EPMAP) 1 False Allow File and Printer Sharing (Spooler Service - RPC) 1 False Allow File and Printer Sharing (NB-Session-In) 1 False Allow File and Printer Sharing (Spooler Service - RPC) 4 True Allow File and Printer Sharing (NB-Datagram-In) 1 False Allow File and Printer Sharing (NB-Name-In) 4 True Allow File and Printer Sharing (Spooler Service - RPC-EPMAP) 4 True Allow File and Printer Sharing (NB-Name-In) 1 False Allow File and Printer Sharing (NB-Session-In) 4 True Allow File and Printer Sharing (Echo Request - ICMPv4-In) 4 True Allow File and Printer Sharing (SMB-In) 4 True Allow File and Printer Sharing (SMB-In) 1 False Allow File and Printer Sharing (Echo Request - ICMPv6-In) 4 True Allow File and Printer Sharing (Echo Request - ICMPv6-In) 1 False Allow File and Printer Sharing (NB-Datagram-In) 4 True Allow File and Printer Sharing (Echo Request - ICMPv4-In) 1 False Allow File and Printer Sharing (LLMNR-UDP-In) 4 True Allow File and Printer Sharing (LLMNR-UDP-In) 3 False Allow File and Printer Sharing (NB-Datagram-In) 2 False Allow File and Printer Sharing (Echo Request - ICMPv6-In) 2 False Allow File and Printer Sharing (SMB-In) 2 False Allow File and Printer Sharing (Echo Request - ICMPv4-In) 2 False Allow File and Printer Sharing (NB-Session-In) 2 False Allow File and Printer Sharing (Spooler Service - RPC-EPMAP) 2 False Allow File and Printer Sharing (NB-Name-In) 2 False Allow File and Printer Sharing (Spooler Service - RPC) 2 False Allow

Прегледно и ясно. Супер! Сега да променим някое от горните правила, примерно "File and Printer Sharing (Echo Request - ICMPv4-In) 2 False Allow". Няма да го правим с една команда да е активно и да се отнася за всички профили, а поотделно. Накрая ще покажа как може да се направи с една команда. За начало нека правилото се отнася за всички профили.

Set-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)' -Profile Public,Domain,Private

Да проверим:

Get-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)' -Direction Inbound | Select-Object -Property DisplayName,Profiles,Enabled,Action DisplayName Profiles Enabled Action ----------- -------- ------- ------ File and Printer Sharing (Echo Request - ICMPv4-In) 7 True Allow File and Printer Sharing (Echo Request - ICMPv4-In) 7 False Allow File and Printer Sharing (Echo Request - ICMPv4-In) 7 False Allow

Прекрасно, правилото се отнася за всички профили. Сега да го направим активно (Имаме две прафила със статус False).

Set-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)' -Enabled True

Да проверим:

Get-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)' | Select-Object -Property DisplayName,Profiles,Enabled,Action DisplayName Profiles Enabled Action ----------- -------- ------- ------ File and Printer Sharing (Echo Request - ICMPv4-In) 7 True Allow File and Printer Sharing (Echo Request - ICMPv4-In) 7 True Allow File and Printer Sharing (Echo Request - ICMPv4-In) 7 True Allow

И сега обещаната команда която ще направи горните две стъпки на един път.

Set-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)' -Enabled True -Profile Public,Domain,Private

Ако пък искате правилото да се прилага не само за точно определено условие, то използвайте група. За пример:

Set-NetFirewallRule -DisplayGroup 'File and Printer Sharing' -Enabled True -Profile Public,Domain,Private

Като цяло Powershell е много мощен инструмент. Просто е доста мъчен за анализ.

Управление на приложения (Аpplications)

Показване на приложения

За начало да проверим какви приложения от магазина на Microsoft са инсталирани .

Get-AppxPackage | select name, packagefullname

За да изтриете определено приложение:

Get-AppxPackage *windowsmaps*| Remove-AppxPackage

Приложението беше изтрито за текущия потребител. Ако пък е за всички потребители:

Get-AppxPackage -allusers *windowsalarms*| Remove-AppxPackage

Ако пък искате да изтриете всички приложения за всички потребители то ползвайте следната команда:

Get-AppxPackage -allusers | Remove-AppxPackage

Сега ще покажа няколко приложения които стандартно не могат да се изтрият. Може само през PowerShell като Administrator.

Get-AppxPackage -allusers *Microsoft.Xbox* | Remove-AppxPackage Get-AppxPackage -allusers Microsoft.549981C3F5F10 | Remove-AppxPackage Get-AppxPackage *Microsoft.YourPhone* -AllUsers | Remove-AppxPackage Get-AppxPackage -allusers *People* | Remove-AppxPackage Get-AppxPackage -allusers Microsoft.WindowsMaps | Remove-AppxPackage

Приложенията са: - Xbox - Кортана - Вашия телефон - Хора - Карти Примерно още могат да се изтрият, Време, Офис, OneNote, OneDrive.