Add files via upload
This commit is contained in:
parent
d674fc723a
commit
d673fa782f
3 changed files with 772 additions and 60 deletions
192
posh.txt
192
posh.txt
|
|
@ -13,13 +13,16 @@ PowerShell Commands
|
|||
- ActiveDirectory
|
||||
- ServerManager
|
||||
- PackageManagement
|
||||
- SQLite
|
||||
- PowerCLI
|
||||
- EMShell
|
||||
- VBR
|
||||
- REST-API
|
||||
- Console-API
|
||||
- Convert-Language
|
||||
- TrueNAS
|
||||
- Veeam
|
||||
- REST API
|
||||
- IE
|
||||
- Console API
|
||||
- XML
|
||||
- Excel
|
||||
- SQLite
|
||||
- Git
|
||||
|
||||
### Help
|
||||
|
|
@ -35,6 +38,15 @@ $PSVersionTable
|
|||
|
||||
# Object
|
||||
|
||||
### History
|
||||
Get-History # история команд текущей сессии
|
||||
(Get-PSReadLineOption).HistorySavePath # путь к сохраненному файлу с 4096 последних команд (из модуля PSReadLine)
|
||||
Get-Content (Get-PSReadlineOption).HistorySavePath | Select-String Get # поиск по содержимому файла (GREP)
|
||||
Set-PSReadlineOption -MaximumHistoryCount 10000 # изменить количество сохраняемых команд в файл
|
||||
Get-PSReadLineOption | select MaximumHistoryCount
|
||||
Set-PSReadlineOption -HistorySaveStyle SaveNothing # отключить ведение журнала
|
||||
F2 # переключиться с InlineView на ListView
|
||||
|
||||
### Array
|
||||
$srv = @("server-01", "server-02") # создать массив
|
||||
$srv += @("server-03") # добавить в массив новый элемент
|
||||
|
|
@ -409,10 +421,19 @@ Get-EventLog -List # отобразить все корневые журналы
|
|||
Clear-EventLog Application # очистить логи указанного журнала
|
||||
Get-EventLog -LogName Security -InstanceId 4624 # найти логи по ID в журнале Security
|
||||
|
||||
function Get-Log ($count=30,$hour=-3) { # указать значения параметров по умолчанию
|
||||
Get-EventLog -LogName Application -Newest $count | where-Object TimeWritten -ge (Get-Date).AddHours($hour) # отобразить 30 новых событий за последние 3 часа
|
||||
function Get-Log {
|
||||
Param(
|
||||
[Parameter(Mandatory = $true, ValueFromPipeline = $true)][int]$Count,
|
||||
$Hour
|
||||
)
|
||||
if ($Hour -ne $null) {
|
||||
Get-EventLog -LogName Application -Newest $Count | ? TimeWritten -ge (Get-Date).AddHours($Hour)
|
||||
} else {
|
||||
Get-EventLog -LogName Application -Newest $Count
|
||||
}
|
||||
Get-Log 10 -1 # передача параметров функции (если значения идут по порядку, то можно не указывать названия переменных)
|
||||
}
|
||||
10 | Get-Log
|
||||
Get-Log 100 -2
|
||||
|
||||
### WinEvent
|
||||
Get-WinEvent -ListLog * | where logname -match SMB | sort -Descending RecordCount # отобразить все доступные журналы логов
|
||||
|
|
@ -525,14 +546,20 @@ Get-NetAdapter
|
|||
Get-NetAdapterAdvancedProperty
|
||||
Get-NetAdapterStatistics
|
||||
|
||||
### DNSClientServerAddress
|
||||
Get-DNSClientServerAddress
|
||||
Set-DNSClientServerAddress -InterfaceIndex (Get-NetIPConfiguration).InterfaceIndex -ServerAddresses 8.8.8.8
|
||||
|
||||
### nslookup
|
||||
nslookup ya.ru 8.8.8.8
|
||||
nslookup -type=any ya.ru
|
||||
Resolve-DnsName ya.ru -Type MX # ALL,ANY,A,NS,SRV,CNAME,PTR,TXT(spf)
|
||||
|
||||
### route
|
||||
Get-NetRoute
|
||||
|
||||
### netstat
|
||||
Get-NetTCPConnection -State Established,Listen | where LocalAddress -match "192.168"
|
||||
Get-NetTCPConnection -State Established,Listen | ? LocalAddress -match "192.168"
|
||||
|
||||
# WinRM
|
||||
|
||||
|
|
@ -1177,31 +1204,6 @@ break # остановить цикл
|
|||
Get-Job | Receive-Job -Keep # отобразить и не удалять вывод (-Keep)
|
||||
(Get-Job).Information # отобразить результат всех заданий
|
||||
|
||||
# SQLite
|
||||
|
||||
Install-Module -name MySQLite -Repository PSGallery
|
||||
$path = "$home\desktop\Get-Service.db"
|
||||
Get-Service | select Name,DisplayName,Status | ConvertTo-MySQLiteDB -Path $path -TableName Service -force
|
||||
(Get-MySQLiteDB $path).Tables
|
||||
New-MySQLiteDB -Path $path # создать базу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "SELECT name FROM sqlite_master WHERE type='table';" # список всех таблиц в базе
|
||||
Invoke-MySQLiteQuery -Path $path -Query "CREATE TABLE Service (Name TEXT NOT NULL, DisplayName TEXT NOT NULL, Status TEXT NOT NULL);" # создать таблицу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "INSERT INTO Service (Name, DisplayName, Status) VALUES ('Test', 'Full-Test', 'Active');" # добавить данные в таблицу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "SELECT * FROM Service" # содержимое таблицы
|
||||
Invoke-MySQLiteQuery -Path $path -Query "DROP TABLE Service;" # удалить таблицу
|
||||
|
||||
$Service = Get-Service | select Name,DisplayName,Status
|
||||
foreach ($S in $Service) {
|
||||
$1 = $S.Name; $2 = $S.DisplayName; $3 = $S.Status;
|
||||
Invoke-MySQLiteQuery -Path $path -Query "INSERT INTO Service (Name, DisplayName, Status) VALUES ('$1', '$2', '$3');"
|
||||
}
|
||||
|
||||
Install-Module PSSQLite
|
||||
$Connection = New-SQLiteConnection -DataSource $path
|
||||
$Connection.ChangePassword("password")
|
||||
$Connection.Close()
|
||||
Invoke-SqliteQuery -Query "SELECT * FROM Service" -DataSource "$path;Password=password"
|
||||
|
||||
# PowerCLI
|
||||
|
||||
Install-Module -Name VMware.PowerCLI # -AllowClobber # установить модуль (PackageProvider: nuget)
|
||||
|
|
@ -1632,7 +1634,33 @@ cd %PROGRAMFILES%\Microsoft\Exchange Server\V14\Scripts # или v15 для Exch
|
|||
|
||||
Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState -eq "Failed" -or $_.ContentIndexState -eq "FailedAndSuspended"} # отобразить у какой БД произошел сбой работы (FailedAndSuspended) или индекса (ContentIndexState)
|
||||
|
||||
# VBR
|
||||
# TrueNAS
|
||||
|
||||
import-Module TrueNas
|
||||
(Get-Module TrueNas).ExportedCommands
|
||||
Connect-TrueNasServer -Server tnas-01 -SkipCertificateCheck
|
||||
Get-TrueNasCertificate # настройки сертификата
|
||||
Get-TrueNasSetting # настройки языка, time zone, syslog level и server, https port
|
||||
Get-TrueNasUser # список пользователей
|
||||
Get-TrueNasSystemVersion # характеристики (Physical Memory, Model, Cores) и Uptime
|
||||
Get-TrueNasSystemAlert # snmp для оповещений
|
||||
Get-TrueNasSystemNTP # список используемых NTP серверов
|
||||
Get-TrueNasDisk # список разделов физического диска
|
||||
Get-TrueNasInterface # сетевые интерфейсы
|
||||
Get-TrueNasGlobalConfig # сетевые настройки
|
||||
Get-TrueNasDnsServer # настроенные DNS-сервера
|
||||
Get-TrueNasIscsiTarget # отобразить ID группы инициаторов использующих таргет, используемый portal, authentification и authen-method
|
||||
Get-TrueNasIscsiInitiator # отобразить группы инициаторов
|
||||
Get-TrueNasIscsiPortal # слушатель (Listen) и порт
|
||||
Get-TrueNasIscsiExtent # список ISCSi Target (статус работы, путь)
|
||||
Get-TrueNasPool # список pool (Id, Path, Status, Healthy)
|
||||
Get-TrueNasVolume -Type FILESYSTEM # список pool файловых систем
|
||||
Get-TrueNasVolume -Type VOLUME # список разделов в pool и их размер
|
||||
Get-TrueNasService | ft # список служб и их статус
|
||||
Start-TrueNasService ssh # запустить службу
|
||||
Stop-TrueNasService ssh # остановить службу
|
||||
|
||||
# Veeam
|
||||
|
||||
Set-ExecutionPolicy AllSigned # or Set-ExecutionPolicy Bypass -Scope Process
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
||||
|
|
@ -1650,7 +1678,7 @@ Get-VBRBackupServerCertificate
|
|||
Get-VBRRestorePoint
|
||||
Get-VBRViProxy
|
||||
|
||||
# REST-API
|
||||
# REST API
|
||||
|
||||
$pars = Invoke-WebRequest -Uri $url
|
||||
$pars | Get-Member
|
||||
|
|
@ -1703,7 +1731,27 @@ $vjob = $vjob.Content | ConvertFrom-Json
|
|||
$vjob = Invoke-RestMethod "https://veeam-11:9419/api/v1/jobs" -Method GET -Headers $Header -SkipCertificateCheck
|
||||
$vjob.data.virtualMachines.includes.inventoryObject
|
||||
|
||||
# Console-API
|
||||
# IE
|
||||
|
||||
$ie.document.IHTMLDocument3_getElementsByTagName("input") | select name # получить имена всех Input Box
|
||||
$ie.document.IHTMLDocument3_getElementsByTagName("button") | select innerText # получить имена всех Button
|
||||
$ie.Document.documentElement.innerHTML # прочитать сырой Web Content (<input name="login" tabindex="100" class="input__control input__input" id="uniq32005644019429136" spellcheck="false" placeholder="Логин")
|
||||
$All_Elements = $ie.document.IHTMLDocument3_getElementsByTagName("*") # забрать все элементы
|
||||
$Go_Button = $All_Elements | ? innerText -like "go" # поиск элемента по имени
|
||||
$Go_Button | select ie9_tagName # получить TagName (SPAN) для быстрого дальнейшего поиска
|
||||
$SPAN_Elements = $ie.document.IHTMLDocument3_getElementsByTagName("SPAN")
|
||||
|
||||
$ie = New-Object -ComObject InternetExplorer.Application
|
||||
$ie.navigate("https://yandex.ru")
|
||||
$ie.visible = $true
|
||||
$ie.document.IHTMLDocument3_getElementByID("login").value = "Login"
|
||||
$ie.document.IHTMLDocument3_getElementByID("passwd").value = "Password"
|
||||
$Button_Auth = ($ie.document.IHTMLDocument3_getElementsByTagName("button")) | ? innerText -match "Войти"
|
||||
$Button_Auth.Click()
|
||||
$Result = $ie.Document.documentElement.innerHTML
|
||||
$ie.Quit()
|
||||
|
||||
# Console API
|
||||
|
||||
[Console] | Get-Member -Static
|
||||
[Console]::BackgroundColor = "Blue"
|
||||
|
|
@ -1742,7 +1790,7 @@ if ($pressed) {break}
|
|||
sleep 1
|
||||
} while ($true)
|
||||
|
||||
### Windows-API
|
||||
### Windows API
|
||||
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
[int][System.Windows.Forms.Keys]::F1
|
||||
|
|
@ -1903,27 +1951,9 @@ Remove-Job -Name SrvListClick # удаляет задание
|
|||
-SourceIdentifier # название регистрируемого события
|
||||
-Action # действие при возникновении события
|
||||
|
||||
# Convert-Language
|
||||
# XML
|
||||
|
||||
### HTML (HyperText Markup Language)
|
||||
Get-Process | select Name, CPU | ConvertTo-HTML -As Table > "$home\desktop\proc-table.html" # вывод в формате List (Format-List) или Table (Format-Table)
|
||||
|
||||
Import-Module PSWriteHTML
|
||||
(Get-Module PSWriteHTML).ExportedCommands
|
||||
Get-Service | Out-GridHtml -FilePath ~\Desktop\Get-Service-Out-GridHtml.html
|
||||
|
||||
Import-Module HtmlReport
|
||||
$topVM = ps | Sort PrivateMemorySize -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.PrivateMemorySize)}
|
||||
$topCPU = ps | Sort CPU -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.CPU)}
|
||||
New-Report -Title "Piggy Processes" -Input {
|
||||
New-Chart Bar "Top VM Users" -input $topVm
|
||||
New-Chart Column "Top CPU Overall" -input $topCPU
|
||||
ps | Select ProcessName, Id, CPU, WorkingSet, *MemorySize | New-Table "All Processes"
|
||||
} > ~\Desktop\Get-Process-HtmlReport.html
|
||||
|
||||
### XML (Extensible Markup Language)
|
||||
|
||||
$xml = [xml](Get-Content ~\desktop\home.rdg) # прочитать содержимое xml-файла
|
||||
$xml = [xml](Get-Content ~\desktop\home.rdg) # прочитать содержимое XML-файла
|
||||
$xml = New-Object System.Xml.XmlDocument # создать пустой xml объект
|
||||
$file = Resolve-Path("~\desktop\home.rdg") # забрать путь к файлу
|
||||
$xml.load($file) # открыть файл
|
||||
|
|
@ -1950,7 +1980,7 @@ return
|
|||
}
|
||||
}
|
||||
|
||||
### XPath
|
||||
### XPath (Query Language for Extensible Markup Language)
|
||||
|
||||
$FilterXPath = '<QueryList><Query Id="0"><Select>*[System[EventID=21]]</Select></Query></QueryList>'
|
||||
$RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -FilterXPath $FilterXPath
|
||||
|
|
@ -2004,6 +2034,22 @@ network:
|
|||
$Result = ConvertFrom-Yaml $network
|
||||
$Result.Values.ethernets.ens160.nameservers
|
||||
|
||||
### HTML (HyperText Markup Language)
|
||||
Get-Process | select Name, CPU | ConvertTo-HTML -As Table > "$home\desktop\proc-table.html" # вывод в формате List (Format-List) или Table (Format-Table)
|
||||
|
||||
Import-Module PSWriteHTML
|
||||
(Get-Module PSWriteHTML).ExportedCommands
|
||||
Get-Service | Out-GridHtml -FilePath ~\Desktop\Get-Service-Out-GridHtml.html
|
||||
|
||||
Import-Module HtmlReport
|
||||
$topVM = ps | Sort PrivateMemorySize -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.PrivateMemorySize)}
|
||||
$topCPU = ps | Sort CPU -Descending | Select -First 10 | %{,@(($_.ProcessName + " " + $_.Id), $_.CPU)}
|
||||
New-Report -Title "Piggy Processes" -Input {
|
||||
New-Chart Bar "Top VM Users" -input $topVm
|
||||
New-Chart Column "Top CPU Overall" -input $topCPU
|
||||
ps | Select ProcessName, Id, CPU, WorkingSet, *MemorySize | New-Table "All Processes"
|
||||
} > ~\Desktop\Get-Process-HtmlReport.html
|
||||
|
||||
### CSV (Comma-Separated Values)
|
||||
Get-Service | Select Name,DisplayName,Status,StartType | Export-Csv -path "$home\Desktop\Get-Service.csv" -Append -Encoding Default # экспортировать в csv (-Encoding UTF8)
|
||||
Import-Csv "$home\Desktop\Get-Service.csv" -Delimiter "," # импортировать массив
|
||||
|
|
@ -2014,7 +2060,7 @@ West,Texas,927,923.71
|
|||
$null,Tennessee,466,770.67
|
||||
"@
|
||||
|
||||
### Excel.Application.Creat
|
||||
# Excel
|
||||
|
||||
$path = "$home\Desktop\Services-to-Excel.xlsx"
|
||||
$Excel = New-Object -ComObject Excel.Application
|
||||
|
|
@ -2085,6 +2131,32 @@ $data = ps
|
|||
$Chart = New-ExcelChartDefinition -XRange CPU -YRange WS -Title "Process" -NoLegend
|
||||
$data | Export-Excel .\ps.xlsx -AutoNameRange -ExcelChartDefinition $Chart -Show
|
||||
|
||||
# SQLite
|
||||
|
||||
Install-Module MySQLite -Repository PSGallery
|
||||
$path = "$home\desktop\Get-Service.db"
|
||||
Get-Service | select Name,DisplayName,Status | ConvertTo-MySQLiteDB -Path $path -TableName Service -force
|
||||
(Get-MySQLiteDB $path).Tables
|
||||
New-MySQLiteDB -Path $path # создать базу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "SELECT name FROM sqlite_master WHERE type='table';" # список всех таблиц в базе
|
||||
Invoke-MySQLiteQuery -Path $path -Query "CREATE TABLE Service (Name TEXT NOT NULL, DisplayName TEXT NOT NULL, Status TEXT NOT NULL);" # создать таблицу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "INSERT INTO Service (Name, DisplayName, Status) VALUES ('Test', 'Full-Test', 'Active');" # добавить данные в таблицу
|
||||
Invoke-MySQLiteQuery -Path $path -Query "SELECT * FROM Service" # содержимое таблицы
|
||||
Invoke-MySQLiteQuery -Path $path -Query "DROP TABLE Service;" # удалить таблицу
|
||||
|
||||
$Service = Get-Service | select Name,DisplayName,Status
|
||||
foreach ($S in $Service) {
|
||||
$1 = $S.Name; $2 = $S.DisplayName; $3 = $S.Status;
|
||||
Invoke-MySQLiteQuery -Path $path -Query "INSERT INTO Service (Name, DisplayName, Status) VALUES ('$1', '$2', '$3');"
|
||||
}
|
||||
|
||||
### Creat password database
|
||||
|
||||
$Connection = New-SQLiteConnection -DataSource $path
|
||||
$Connection.ChangePassword("password")
|
||||
$Connection.Close()
|
||||
Invoke-SqliteQuery -Query "SELECT * FROM Service" -DataSource "$path;Password=password"
|
||||
|
||||
# Git
|
||||
|
||||
git --version
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue