🔹 Работа с объектами .NET
| Команда / Концепт | Описание | Пример |
|---|---|---|
[Math]::Pow(2,3) | Вызов статического метода .NET | [Math]::Sqrt(81) |
New-Object | Создание объекта | New-Object System.Text.StringBuilder |
[System.IO.File]::ReadAllText() | Чтение файла | [System.IO.File]::ReadAllText("file.txt") |
[DateTime]::Now | Дата и время | [DateTime]::UtcNow |
$env:PATH | Доступ к переменным окружения | $env:USERNAME |
In Questo Articolo
🔹 WMI и CIM (админ-инструменты)
| Команда | Описание | Пример |
|---|---|---|
Get-WmiObject | Получить объект WMI | Get-WmiObject Win32_OperatingSystem |
Get-CimInstance | Новый вариант (CIM) | Get-CimInstance Win32_Processor |
Invoke-CimMethod | Вызов метода CIM | Invoke-CimMethod -InputObject (Get-CimInstance Win32_Process -Filter "Name='notepad.exe'") -MethodName Terminate |
New-CimSession | Сессия для удалённого управления | New-CimSession -ComputerName Server01 |
🔹 Фоновые задачи и асинхронность
| Команда | Описание | Пример |
|---|---|---|
Start-Job | Запустить задачу в фоне | Start-Job -ScriptBlock { Get-Process } |
Get-Job | Посмотреть джобы | Get-Job |
Receive-Job | Получить результат | Receive-Job -Id 1 |
Remove-Job | Удалить задачу | Remove-Job -Id 1 |
Start-ThreadJob | Лёгкие джобы (PS 6+) | Start-ThreadJob { Get-Date } |
🔹 Ремоутинг (удалённое управление)
| Команда | Описание | Пример |
|---|---|---|
Enter-PSSession | Подключение к удалённой машине | Enter-PSSession -ComputerName Server01 -Credential Admin |
Invoke-Command | Выполнение команд удалённо | Invoke-Command -ComputerName Server01 -ScriptBlock { Get-Process } |
New-PSSession | Создать persistent-сессию | New-PSSession -ComputerName Server01 |
Get-PSSession | Список сессий | Get-PSSession |
Remove-PSSession | Закрыть сессию | Remove-PSSession -Id 1 |
🔹 Работа с данными
| Команда | Описание | Пример |
|---|---|---|
ConvertTo-Json | В PowerShell → JSON | `Get-Process |
ConvertFrom-Json | JSON → PowerShell | `Get-Content data.json |
Export-Csv | Экспорт в CSV | `Get-Service |
Import-Csv | Импорт из CSV | Import-Csv services.csv |
Out-File | Записать в файл | `Get-Process |
🔹 Регулярные выражения
| Приём | Пример | Результат |
|---|---|---|
| Поиск | "hello123" -match "\d+" | $true |
| Замена | "abc123" -replace "\d+", "XXX" | abcXXX |
| Извлечение | Select-String -Pattern "error" logfile.txt | Найдёт строки с «error» |
🔹 Безопасность и пользователи
| Команда | Описание | Пример |
|---|---|---|
Get-LocalUser | Список локальных пользователей | Get-LocalUser |
New-LocalUser | Создать пользователя | New-LocalUser "TestUser" -Password (Read-Host -AsSecureString) |
Add-LocalGroupMember | Добавить в группу | Add-LocalGroupMember -Group "Administrators" -Member "TestUser" |
Get-ACL | Права доступа к файлу | Get-ACL file.txt |
Set-ACL | Изменить права доступа | Set-ACL file.txt $acl |
🔹 Сетевые трюки
| Команда | Описание | Пример |
|---|---|---|
Resolve-DnsName | DNS-запрос | Resolve-DnsName google.com |
Get-NetTCPConnection | TCP-сессии | Get-NetTCPConnection -State Established |
Get-NetFirewallRule | Правила файрвола | Get-NetFirewallRule |
New-NetFirewallRule | Создать правило | New-NetFirewallRule -DisplayName "Allow 8080" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080 |
🔹 Сценарии и автоматизация
| Приём | Пример |
|---|---|
| Запуск скрипта | .\script.ps1 |
| Параметры в скрипте | param([string]$Name, [int]$Age) |
| Try/Catch | try { 1/0 } catch { "Error: $_" } |
| Trap (старый способ) | trap { "Error: $_" ; continue } |
| Логирование | Start-Transcript -Path log.txt |
| Завершение | Exit 1 |