Рубрики
Powershell

Powershell управление ОС

Основные команды:

Get-Process - получить список процессов (алиас PS)

Get-PSDrive - покажет все диски системы (реестр алиасы и ...)

ps | ls - покажет откуда запущенны все процессы

ps explorer | ls - покажет откуда запущен процесс explorer

Set-Location HKLM: - перейти в реестр

cd HKLM:  - перейти в реестр

Set-Location HKLM:
Set-Location c: - перейти на диск c:
Get-Location - покажет текущие место положение

Get-Member - показать доступные методы 
Get-Commnad *name* - показать команду в катрой есть *name*

ps notepad | Get-Member - показать доступные методы для notepad (kill start WaitForExit)
(ps notepad).WaitForExit() - перед этой командой откроем notepad. выполнив ее консоль будет не доступна пока не закроем notepad/  
(ps notepad).StartTime - покажет когда был запущен notepad

shutdown /r /f /t 0 - перезагрузить пк
shutdown /s /f /t 0 - выключить пк
shutdown /r /f /m \\HOST_NAME /t 0 - перезагрузить пк с именем HOST_NAME
shutdown /s /f /m \\HOST_NAME /t 0  - выключить пк с именем HOST_NAME

Get-WMIObject -Class Win32_OperatingSystem | Get-Member - источник информации о системе 
(Get-WMIObject -Class Win32_OperatingSystem).Caption - название операционной системы
(Get-WMIObject -Class Win32_OperatingSystem).CSDVersion - установленный сервис пак
(Get-WMIObject -Class Win32_OperatingSystem).CSName - имя компьютера
(Get-WMIObject -Class Win32_OperatingSystem).OSLanguage - язык операционной системы 1033 — английский, 1049 — русский
Get-WmiObject -Class Win32_Product | Sort-Object Vendor, Name | Format-Table Vendor, Name, Version - будет таблица содержащая сведения об установленном ПО
Get-WmiObject -Class Win32_Product -ComputerName . —Filter "Name=’DeviceLock’" | Format-List -Property * -  информация об установленном ПО с именем DeviceLock
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "." - информация об установленных обновлениях
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "." | where-object {$_.hotfixid -eq "KB2570791"} - находим установлены ли обновление KB2570791
Get-WmiObject Win32_LogicalDisk -ComputerName SRV01 -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace - сколько свободного места на диске C:

hostname - показать имя компьютера

netdom renamecomputer Win01 /newname:SRV01 - переименовать пк с именем win01 в srv01
netdom join SRV01 /Domain:example.org /OU:ou=ouname,dc=example,dc=org /UserD:DomainAdmin /PasswordD:password - добавить пк с именем srv01 в домен example.org

Rename-Computer –NewName SRV01 - переименовать пк с именем win01 в srv01

Add-Computer -domainname example.org -OUPath "OU=ouname=example,DC=org" - добавить пк с именем srv01 в домен example.org

net use E: \\SRV01\users /Persistent:Yes - монтирование сетевых диска ( шара )

New-PSDrive –Name E –PSProvider FileSystem –Root \\SRV01\users –Persist - монтирование сетевых диска ( шара )

diskpart - работы с дисками

fsutil - работы с дисками
fsutil fsinfo statistics C: - информация о партиции С:

Нахождение установленных обновлений:

$a = get-content servers.txt
$a | foreach { if (!(get—hotfix -id KB2570791 -computername $_)) { add-content $_ -path Missing—KB2570791.txt}}

Нахождение обновлений на множестве компьютеров:

$computers = Get-Content "hostlist.txt"
$kb = "KB2570791"
foreach ($computer in $computers) {
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName $computer | where {$_.hotfixid -like "*$kb*" -OR $_.description -like "*$kb*" }
}

Установка программы:

(Get-WMIObject -ComputerName "host-01" -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\SERVER_NAME\Deploy\Package_01\tools.msi) - установка программы tools.msi на пк host-01

Обновление \ Удаление ПО:


(Get-WmiObject -Class Win32_Product -ComputerName . —Filter  Name=‘OldTools’").Upgrade(\\SERVER_NAME\Deploy\Package_01\OldTools.msi) - обновление по
(Get-WmiObject -Class Win32_Product —Filter "Name=’Devicelock’" -ComputerName "." ).Uninstall() - удаление по