Added nuget pack, influxdb commands, posh theme, dsc example
This commit is contained in:
parent
ae6e331262
commit
4f8e32b686
1 changed files with 348 additions and 182 deletions
530
posh.txt
530
posh.txt
|
|
@ -8,7 +8,9 @@ GitHub Repo stars: https://img.shields.io/github/stars/Lifailon/PS-Commands
|
||||||
Статья на Habr: PowerShell и его возможности (https://habr.com/ru/articles/782592/)
|
Статья на Habr: PowerShell и его возможности (https://habr.com/ru/articles/782592/)
|
||||||
|
|
||||||
# Help
|
# Help
|
||||||
|
# oh-my-posh
|
||||||
# Object
|
# Object
|
||||||
|
# npp
|
||||||
# Regex
|
# Regex
|
||||||
# DataType
|
# DataType
|
||||||
# Bit
|
# Bit
|
||||||
|
|
@ -34,7 +36,6 @@ GitHub Repo stars: https://img.shields.io/github/stars/Lifailon/PS-Commands
|
||||||
# DNS
|
# DNS
|
||||||
# DHCP
|
# DHCP
|
||||||
# DFS
|
# DFS
|
||||||
# Package-Manager
|
|
||||||
# StorageReplica
|
# StorageReplica
|
||||||
# PS2EXE
|
# PS2EXE
|
||||||
# NSSM
|
# NSSM
|
||||||
|
|
@ -85,8 +86,10 @@ GitHub Repo stars: https://img.shields.io/github/stars/Lifailon/PS-Commands
|
||||||
# Proxy
|
# Proxy
|
||||||
# OpenSSH
|
# OpenSSH
|
||||||
# WinRM
|
# WinRM
|
||||||
# DSC
|
# PackageManagement
|
||||||
|
# NuGet
|
||||||
# Git
|
# Git
|
||||||
|
# DSC
|
||||||
# Ansible
|
# Ansible
|
||||||
# GigaChat
|
# GigaChat
|
||||||
# YandexGPT
|
# YandexGPT
|
||||||
|
|
@ -125,9 +128,35 @@ Get-ExecutionPolicy
|
||||||
$Metadata = New-Object System.Management.Automation.CommandMetaData (Get-Command Get-Service) # получить информацию о командлете
|
$Metadata = New-Object System.Management.Automation.CommandMetaData (Get-Command Get-Service) # получить информацию о командлете
|
||||||
[System.Management.Automation.ProxyCommand]::Create($Metadata) # исходный код функции
|
[System.Management.Automation.ProxyCommand]::Create($Metadata) # исходный код функции
|
||||||
|
|
||||||
|
# oh-my-posh
|
||||||
|
|
||||||
|
[Install](https://ohmyposh.dev/docs/installation/windows)
|
||||||
|
winget install JanDeDobbeleer.OhMyPosh -s winget
|
||||||
|
choco install oh-my-posh -y
|
||||||
|
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
|
||||||
|
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))
|
||||||
|
|
||||||
|
[Themes](https://ohmyposh.dev/docs/themes)
|
||||||
|
Get-PoshThemes
|
||||||
|
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression
|
||||||
|
oh-my-posh init pwsh --config "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/cert.omp.json" | Invoke-Expression
|
||||||
|
|
||||||
|
New-Item -Path $PROFILE -Type File -Force
|
||||||
|
notepad $PROFILE
|
||||||
|
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression
|
||||||
|
|
||||||
|
### themes-performance
|
||||||
|
|
||||||
|
Install-Module themes-performance -Repository NuGet
|
||||||
|
Import-Module themes-performance
|
||||||
|
Set-PoshTheme -Theme System-Sensors
|
||||||
|
Set-PoshTheme -Theme System-Performance
|
||||||
|
Set-PoshTheme -Theme Pwsh-Process-Performance
|
||||||
|
|
||||||
# Object
|
# Object
|
||||||
|
|
||||||
### Variable
|
### Variable
|
||||||
|
|
||||||
$var = Read-Host "Enter" # ручной ввод
|
$var = Read-Host "Enter" # ручной ввод
|
||||||
$pass = Read-Host "Enter Password" -AsSecureString # скрывать набор
|
$pass = Read-Host "Enter Password" -AsSecureString # скрывать набор
|
||||||
$global:path = "\\path" # задать глобальную переменную, например в функции
|
$global:path = "\\path" # задать глобальную переменную, например в функции
|
||||||
|
|
@ -141,6 +170,7 @@ Remove-Variable -Name * # очистить все переменные
|
||||||
$LASTEXITCODE # содержит код вывода последней запущенной программы, например ping. Если код возврата положительный (True), то $LastExitCode = 0
|
$LASTEXITCODE # содержит код вывода последней запущенной программы, например ping. Если код возврата положительный (True), то $LastExitCode = 0
|
||||||
|
|
||||||
### ENV
|
### ENV
|
||||||
|
|
||||||
Get-ChildItem Env: # отобразить все переменные окружения
|
Get-ChildItem Env: # отобразить все переменные окружения
|
||||||
$env:PSModulePath # директории импорта модулей
|
$env:PSModulePath # директории импорта модулей
|
||||||
$env:userprofile
|
$env:userprofile
|
||||||
|
|
@ -152,6 +182,7 @@ $env:logonserver
|
||||||
[Environment]::GetFolderPath('ApplicationData')
|
[Environment]::GetFolderPath('ApplicationData')
|
||||||
|
|
||||||
### History
|
### History
|
||||||
|
|
||||||
Get-History # история команд текущей сессии
|
Get-History # история команд текущей сессии
|
||||||
(Get-History)[-1].Duration.TotalSeconds # время выполнения последней команды
|
(Get-History)[-1].Duration.TotalSeconds # время выполнения последней команды
|
||||||
(Get-PSReadLineOption).HistorySavePath # путь к сохраненному файлу с 4096 последних команд (из модуля PSReadLine)
|
(Get-PSReadLineOption).HistorySavePath # путь к сохраненному файлу с 4096 последних команд (из модуля PSReadLine)
|
||||||
|
|
@ -162,21 +193,25 @@ Set-PSReadlineOption -HistorySaveStyle SaveNothing # отключить веде
|
||||||
F2 # переключиться с InlineView на ListView
|
F2 # переключиться с InlineView на ListView
|
||||||
|
|
||||||
### Clipboard
|
### Clipboard
|
||||||
|
|
||||||
Set-Clipboard $srv # скопировать в буфер обмена
|
Set-Clipboard $srv # скопировать в буфер обмена
|
||||||
Get-Clipboard # вставить
|
Get-Clipboard # вставить
|
||||||
|
|
||||||
### Write
|
### Write
|
||||||
|
|
||||||
Write-Host -ForegroundColor Black -BackgroundColor Green "Test" -NoNewline
|
Write-Host -ForegroundColor Black -BackgroundColor Green "Test" -NoNewline
|
||||||
Write-Error Test
|
Write-Error Test
|
||||||
Foreach ($n in 1..100) {Write-Progress -Activity "Test Progress" -PercentComplete $n}
|
Foreach ($n in 1..100) {Write-Progress -Activity "Test Progress" -PercentComplete $n}
|
||||||
|
|
||||||
### Array
|
### Array
|
||||||
|
|
||||||
$srv = @("server-01", "server-02") # создать массив
|
$srv = @("server-01", "server-02") # создать массив
|
||||||
$srv += @("server-03") # добавить в массив новый элемент
|
$srv += @("server-03") # добавить в массив новый элемент
|
||||||
$srv.Count # отобразить кол-во элементов в массиве
|
$srv.Count # отобразить кол-во элементов в массиве
|
||||||
Out-String # построчный вывод
|
Out-String # построчный вывод
|
||||||
|
|
||||||
### Index
|
### Index
|
||||||
|
|
||||||
$srv[0] # вывести первое значение элемента массива
|
$srv[0] # вывести первое значение элемента массива
|
||||||
$srv[0] = Name # замена элемента в массиве
|
$srv[0] = Name # замена элемента в массиве
|
||||||
$srv[0].Length # узнать кол-во символов первого значения в массиве
|
$srv[0].Length # узнать кол-во символов первого значения в массиве
|
||||||
|
|
@ -235,11 +270,13 @@ $Class.Server = $env:computername
|
||||||
$Class.Start(1)
|
$Class.Start(1)
|
||||||
|
|
||||||
### Pipeline
|
### Pipeline
|
||||||
|
|
||||||
$obj | Add-Member -MemberType NoteProperty -Name "Type" -Value "user" -Force # добавление объкта вывода NoteProperty
|
$obj | Add-Member -MemberType NoteProperty -Name "Type" -Value "user" -Force # добавление объкта вывода NoteProperty
|
||||||
$obj | Add-Member -MemberType NoteProperty -Name "User" -Value "admin" -Force # изменеие содержимого для сущности объекта User
|
$obj | Add-Member -MemberType NoteProperty -Name "User" -Value "admin" -Force # изменеие содержимого для сущности объекта User
|
||||||
ping $srv | Out-Null # перенаправить результат вывода в Out-Null
|
ping $srv | Out-Null # перенаправить результат вывода в Out-Null
|
||||||
|
|
||||||
### Select-Object
|
### Select-Object
|
||||||
|
|
||||||
Get-Process | Select-Object -Property * # отобразить все доступные объекты вывода
|
Get-Process | Select-Object -Property * # отобразить все доступные объекты вывода
|
||||||
Get-Process | select -Unique "Name" # удалить повторяющиеся значения в массиве
|
Get-Process | select -Unique "Name" # удалить повторяющиеся значения в массиве
|
||||||
Get-Process | select -ExpandProperty ProcessName # преобразовать из объекта-коллекции в массив (вывести содержимое без наименовая столбца)
|
Get-Process | select -ExpandProperty ProcessName # преобразовать из объекта-коллекции в массив (вывести содержимое без наименовая столбца)
|
||||||
|
|
@ -253,19 +290,23 @@ ps | Sort-Object -Descending CPU | select -first 10 ProcessName, # сортир
|
||||||
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}} # вычесть из текущего времени - время запуска, и удалить milisec
|
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}} # вычесть из текущего времени - время запуска, и удалить milisec
|
||||||
|
|
||||||
### Select-String
|
### Select-String
|
||||||
|
|
||||||
$(ipconfig | Select-String IPv4) -replace ".+: " | Where-Object {$_ -match "^172."} # узнать только IP
|
$(ipconfig | Select-String IPv4) -replace ".+: " | Where-Object {$_ -match "^172."} # узнать только IP
|
||||||
$Current_IP = Get-Content $RDCMan_RDG_PATH | Select-String $RDCMan_Display_Name -Context 0,1 # получить две строки
|
$Current_IP = Get-Content $RDCMan_RDG_PATH | Select-String $RDCMan_Display_Name -Context 0,1 # получить две строки
|
||||||
$Current_IP = $Current_IP.Context.DisplayPostContext[0] -replace ".+<name>|<\/name>" # забрать только вторую строку и удалить тэги
|
$Current_IP = $Current_IP.Context.DisplayPostContext[0] -replace ".+<name>|<\/name>" # забрать только вторую строку и удалить тэги
|
||||||
|
|
||||||
### Format-Table/Format-List
|
### Format-Table/Format-List
|
||||||
|
|
||||||
Get-Process | ft ProcessName, StartTime -Autosize # автоматическая группировка размера столбцов
|
Get-Process | ft ProcessName, StartTime -Autosize # автоматическая группировка размера столбцов
|
||||||
|
|
||||||
### Measure-Object
|
### Measure-Object
|
||||||
|
|
||||||
Get-Process | Measure | select Count # кол-во объектов
|
Get-Process | Measure | select Count # кол-во объектов
|
||||||
Get-Process | Measure -Line -Word -Character # кол-во строк, слов и Char объектов
|
Get-Process | Measure -Line -Word -Character # кол-во строк, слов и Char объектов
|
||||||
Get-Process | Measure-Object PM -sum | Select-Object Count,@{Name="MEM_MB"; Expression={[int]($_.Sum/1mb)}} # кол-во процессов и общий объем занятой памяти в МБайт
|
Get-Process | Measure-Object PM -sum | Select-Object Count,@{Name="MEM_MB"; Expression={[int]($_.Sum/1mb)}} # кол-во процессов и общий объем занятой памяти в МБайт
|
||||||
|
|
||||||
### Compare-Object
|
### Compare-Object
|
||||||
|
|
||||||
Compare-Object -ReferenceObject (Get-Content -Path .\file1.txt) -DifferenceObject (Get-Content -Path .\file2.txt) # сравнение двух файлов
|
Compare-Object -ReferenceObject (Get-Content -Path .\file1.txt) -DifferenceObject (Get-Content -Path .\file2.txt) # сравнение двух файлов
|
||||||
$group1 = Get-ADGroupMember -Identity "Domain Admins"
|
$group1 = Get-ADGroupMember -Identity "Domain Admins"
|
||||||
$group2 = Get-ADGroupMember -Identity "Enterprise Admins"
|
$group2 = Get-ADGroupMember -Identity "Enterprise Admins"
|
||||||
|
|
@ -275,6 +316,7 @@ Compare-Object -ReferenceObject $group1 -DifferenceObject $group2 -IncludeEqual
|
||||||
=> # есть изменения в $group2
|
=> # есть изменения в $group2
|
||||||
|
|
||||||
### Where-Object (?)
|
### Where-Object (?)
|
||||||
|
|
||||||
Get-Process | Where-Object {$_.ProcessName -match "zabbix"} # фильтрация/поиск процессов по имени свойства объекта
|
Get-Process | Where-Object {$_.ProcessName -match "zabbix"} # фильтрация/поиск процессов по имени свойства объекта
|
||||||
Get-Process | where CPU -gt 10 | Sort-Object -Descending CPU # вывести объекты, где значения CPU больше 10
|
Get-Process | where CPU -gt 10 | Sort-Object -Descending CPU # вывести объекты, где значения CPU больше 10
|
||||||
Get-Process | where WS -gt 200MB # отобразить процессы где WS выше 200МБ
|
Get-Process | where WS -gt 200MB # отобразить процессы где WS выше 200МБ
|
||||||
|
|
@ -286,23 +328,25 @@ netstat -an | ?{$_ -match 443}
|
||||||
(netstat -an) -match 443
|
(netstat -an) -match 443
|
||||||
|
|
||||||
### Sort-Object
|
### Sort-Object
|
||||||
|
|
||||||
Get-Process | Sort-Object -Descending CPU | ft # обратная (-Descending) сортировка по CPU
|
Get-Process | Sort-Object -Descending CPU | ft # обратная (-Descending) сортировка по CPU
|
||||||
$path[-1..-10] # обратная сборка массива без сортировки
|
$path[-1..-10] # обратная сборка массива без сортировки
|
||||||
|
|
||||||
### Last/First
|
### Last/First
|
||||||
|
|
||||||
Get-Process | Sort-Object -Descending CPU | select -First 10 # вывести первых 10 объектов
|
Get-Process | Sort-Object -Descending CPU | select -First 10 # вывести первых 10 объектов
|
||||||
Get-Process | Sort-Object -Descending CPU | select -Last 10 # вывести последних 10 объектов
|
Get-Process | Sort-Object -Descending CPU | select -Last 10 # вывести последних 10 объектов
|
||||||
|
|
||||||
### oh-my-posh
|
### Group-Object
|
||||||
|
|
||||||
winget install JanDeDobbeleer.OhMyPosh -s winget
|
$Groups = Get-CimInstance -Class Win32_PnPSignedDriver |
|
||||||
Get-PoshThemes
|
Select-Object DriverProviderName, FriendlyName, Description, DriverVersion, DriverDate |
|
||||||
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression # blue-owl,montys,jblab_2021,easy-term,cinnamon,jtracey93,cert
|
Group-Object DriverProviderName, FriendlyName, Description, DriverVersion, DriverDate
|
||||||
New-Item -Path $PROFILE -Type File -Force
|
$(foreach ($Group in $Groups) {
|
||||||
notepad $PROFILE
|
$Group.Group[0]
|
||||||
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/di4am0nd.omp.json" | Invoke-Expression
|
}) | Format-Table
|
||||||
|
|
||||||
### NPP
|
# npp
|
||||||
|
|
||||||
pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"
|
pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"
|
||||||
|
|
||||||
|
|
@ -376,6 +420,7 @@ $ # Конец строки
|
||||||
-NotMatch # проверка на отсутствие вхождения
|
-NotMatch # проверка на отсутствие вхождения
|
||||||
|
|
||||||
### Matches
|
### Matches
|
||||||
|
|
||||||
$ip = "192.168.10.1"
|
$ip = "192.168.10.1"
|
||||||
$ip -match "(\.\d{1,3})\.\d{1,2}" # True
|
$ip -match "(\.\d{1,3})\.\d{1,2}" # True
|
||||||
$Matches # отобразить все подходящие переменные последнего поиска, которые входят и не входят в группы ()
|
$Matches # отобразить все подходящие переменные последнего поиска, которые входят и не входят в группы ()
|
||||||
|
|
@ -387,6 +432,7 @@ $Matches[0][-4..-1] -Join ""
|
||||||
$string.Substring($string.IndexOf(".txt")-4, 4) # 2-й вариант (IndexOf)
|
$string.Substring($string.IndexOf(".txt")-4, 4) # 2-й вариант (IndexOf)
|
||||||
|
|
||||||
### Форматирование (.NET method format)
|
### Форматирование (.NET method format)
|
||||||
|
|
||||||
[string]::Format("{1} {0}","Index0","Index1")
|
[string]::Format("{1} {0}","Index0","Index1")
|
||||||
"{1} {0}" -f "Index0","Index1"
|
"{1} {0}" -f "Index0","Index1"
|
||||||
"{0:###-##-##}" -f 1234567 # записать число в другом формате (#)
|
"{0:###-##-##}" -f 1234567 # записать число в другом формате (#)
|
||||||
|
|
@ -401,6 +447,7 @@ foreach ($p in $gp) {
|
||||||
}
|
}
|
||||||
|
|
||||||
### Условный оператор
|
### Условный оператор
|
||||||
|
|
||||||
$rh = Read-Host
|
$rh = Read-Host
|
||||||
if ($rh -eq 1) {ipconfig} elseif ($rh -eq 2) {getmac} else {hostname}
|
if ($rh -eq 1) {ipconfig} elseif ($rh -eq 2) {getmac} else {hostname}
|
||||||
Если условие if () является истенным ($True), выполнить действие в {}
|
Если условие if () является истенным ($True), выполнить действие в {}
|
||||||
|
|
@ -410,6 +457,7 @@ if ($rh -eq 1) {ipconfig} elseif ($rh -eq 2) {getmac} else {hostname}
|
||||||
if ((tnc $srv -Port 80).TcpTestSucceeded) {"Opened port"} else {"Closed port"}
|
if ((tnc $srv -Port 80).TcpTestSucceeded) {"Opened port"} else {"Closed port"}
|
||||||
|
|
||||||
### Операторы
|
### Операторы
|
||||||
|
|
||||||
-eq # равно (equal)
|
-eq # равно (equal)
|
||||||
-ceq # учитывать регистр
|
-ceq # учитывать регистр
|
||||||
-ne # не равно (not equal)
|
-ne # не равно (not equal)
|
||||||
|
|
@ -424,12 +472,14 @@ if ((tnc $srv -Port 80).TcpTestSucceeded) {"Opened port"} else {"Closed port"}
|
||||||
if ((($1 -eq 1) -and ($2 -eq 2)) -or ($1 -ne 3)) {"$true"} else {"$false"} # два условия: (если $1 = 1 и $2 = 2) или $1 не равно 3
|
if ((($1 -eq 1) -and ($2 -eq 2)) -or ($1 -ne 3)) {"$true"} else {"$false"} # два условия: (если $1 = 1 и $2 = 2) или $1 не равно 3
|
||||||
|
|
||||||
### Pipeline Operators
|
### Pipeline Operators
|
||||||
|
|
||||||
Write-Output "First" && Write-Output "Second" # две успешные команды выполняются
|
Write-Output "First" && Write-Output "Second" # две успешные команды выполняются
|
||||||
Write-Error "Bad" && Write-Output "Second" # первая команда завершается ошибкой, из-за чего вторая команда не выполняется
|
Write-Error "Bad" && Write-Output "Second" # первая команда завершается ошибкой, из-за чего вторая команда не выполняется
|
||||||
Write-Error "Bad" || Write-Output "Second" # первая команда завершается ошибкой, поэтому выполняется вторая команда
|
Write-Error "Bad" || Write-Output "Second" # первая команда завершается ошибкой, поэтому выполняется вторая команда
|
||||||
Write-Output "First" || Write-Output "Second" # первая команда выполнена успешно, поэтому вторая команда не выполняется
|
Write-Output "First" || Write-Output "Second" # первая команда выполнена успешно, поэтому вторая команда не выполняется
|
||||||
|
|
||||||
### Invocation Operator
|
### Invocation Operator
|
||||||
|
|
||||||
$addr = "8.8.8.8"
|
$addr = "8.8.8.8"
|
||||||
$ping = "ping"
|
$ping = "ping"
|
||||||
& $ping $addr # запускает текст как команду
|
& $ping $addr # запускает текст как команду
|
||||||
|
|
@ -438,6 +488,7 @@ $ping = "ping"
|
||||||
(Get-Job)[-1] | Receive-Job -Keep
|
(Get-Job)[-1] | Receive-Job -Keep
|
||||||
|
|
||||||
### Специальные символы
|
### Специальные символы
|
||||||
|
|
||||||
\d # число от 0 до 9 (20-07-2022 эквивалент: "\d\d-\d\d-\d\d\d\d")
|
\d # число от 0 до 9 (20-07-2022 эквивалент: "\d\d-\d\d-\d\d\d\d")
|
||||||
\D # обозначает любой символ, кроме цифры. Удаления всех символов, кроме цифр: [int]$("123 test" -replace "\D")
|
\D # обозначает любой символ, кроме цифры. Удаления всех символов, кроме цифр: [int]$("123 test" -replace "\D")
|
||||||
\w # буква от "a" до "z" и от "A" до "Z" или число от 0 до 9
|
\w # буква от "a" до "z" и от "A" до "Z" или число от 0 до 9
|
||||||
|
|
@ -451,6 +502,7 @@ $ping = "ping"
|
||||||
[] # поиск совпадения любой буквы, например, [A-z0-9] от A до z и цифры от 0 до 9 ("192.168.1.1" -match "192.1[6-7][0-9]")
|
[] # поиск совпадения любой буквы, например, [A-z0-9] от A до z и цифры от 0 до 9 ("192.168.1.1" -match "192.1[6-7][0-9]")
|
||||||
|
|
||||||
### Якори
|
### Якори
|
||||||
|
|
||||||
^ или \A # определяет начало строки. $url -replace '^','https:' # добавить в начало;
|
^ или \A # определяет начало строки. $url -replace '^','https:' # добавить в начало;
|
||||||
$ или \Z # обозначают конец строки. $ip -replace "\d{1,3}$","0"
|
$ или \Z # обозначают конец строки. $ip -replace "\d{1,3}$","0"
|
||||||
(?=text) # поиск слова слева. Пишем слева на право от искомого (ищет только целые словосочетания) "Server:\s(.{1,30})\s(?=$username)"
|
(?=text) # поиск слова слева. Пишем слева на право от искомого (ищет только целые словосочетания) "Server:\s(.{1,30})\s(?=$username)"
|
||||||
|
|
@ -463,6 +515,7 @@ $test -replace ".{1}$" # удалить любое кол-во символов
|
||||||
$test -replace "^.{1}" # удалить любое кол-во символов в начале строки
|
$test -replace "^.{1}" # удалить любое кол-во символов в начале строки
|
||||||
|
|
||||||
### Группы захвата
|
### Группы захвата
|
||||||
|
|
||||||
$date = '12.31.2021'
|
$date = '12.31.2021'
|
||||||
$date -replace '^(\d{2}).(\d{2})','$2.$1' # поменять местами
|
$date -replace '^(\d{2}).(\d{2})','$2.$1' # поменять местами
|
||||||
$1 # содержимое первой группы в скобках
|
$1 # содержимое первой группы в скобках
|
||||||
|
|
@ -486,6 +539,7 @@ $srv -isnot [System.Object] # проверка на несоответствие
|
||||||
[String] # неизменяемая строка символов Юникода фиксированной длины (BaseType:System.Object)
|
[String] # неизменяемая строка символов Юникода фиксированной длины (BaseType:System.Object)
|
||||||
|
|
||||||
### Math
|
### Math
|
||||||
|
|
||||||
[math] | Get-Member -Static
|
[math] | Get-Member -Static
|
||||||
[math]::Pow(2,4) # 2 в 4 степени
|
[math]::Pow(2,4) # 2 в 4 степени
|
||||||
[math]::Truncate(1.8) # грубое округление, удаляет дробную часть
|
[math]::Truncate(1.8) # грубое округление, удаляет дробную часть
|
||||||
|
|
@ -495,15 +549,18 @@ $srv -isnot [System.Object] # проверка на несоответствие
|
||||||
[math]::Max(33,22) # возвращает наибольшее значение двух значений
|
[math]::Max(33,22) # возвращает наибольшее значение двух значений
|
||||||
|
|
||||||
### Round
|
### Round
|
||||||
|
|
||||||
[double]::Round(87.5, 0) # 88 (нечетное), в .NET по умолчанию используется округление в средней точке ToEven, где *.5 значения округляются до ближайшего четного целого числа.
|
[double]::Round(87.5, 0) # 88 (нечетное), в .NET по умолчанию используется округление в средней точке ToEven, где *.5 значения округляются до ближайшего четного целого числа.
|
||||||
[double]::Round(88.5, 0) # 88 (четное)
|
[double]::Round(88.5, 0) # 88 (четное)
|
||||||
[double]::Round(88.5, 0, 1) # 89 (округлять в большую сторону)
|
[double]::Round(88.5, 0, 1) # 89 (округлять в большую сторону)
|
||||||
[double]::Round(1234.56789, 2) # округлить до 2 символов после запятой
|
[double]::Round(1234.56789, 2) # округлить до 2 символов после запятой
|
||||||
|
|
||||||
### ToString
|
### ToString
|
||||||
|
|
||||||
(4164539/1MB).ToString("0.00") # разделить на дважды на 1024/1024 и округлить до 3,97
|
(4164539/1MB).ToString("0.00") # разделить на дважды на 1024/1024 и округлить до 3,97
|
||||||
|
|
||||||
### Char
|
### Char
|
||||||
|
|
||||||
[Char] # cимвол Юникода (16-разрядный)
|
[Char] # cимвол Юникода (16-разрядный)
|
||||||
$char = $srv.ToCharArray() # разбить строку [string] на массив [System.Array] из букв
|
$char = $srv.ToCharArray() # разбить строку [string] на массив [System.Array] из букв
|
||||||
|
|
||||||
|
|
@ -1865,77 +1922,6 @@ Get-SRPartnerShip # информация о направлении реплик
|
||||||
Get-SRPartnership | Remove-SRPartnership # удалить реплизацию на основном сервере
|
Get-SRPartnership | Remove-SRPartnership # удалить реплизацию на основном сервере
|
||||||
Get-SRGroup | Remove-SRGroup # удалить реплизацию на обоих серверах
|
Get-SRGroup | Remove-SRGroup # удалить реплизацию на обоих серверах
|
||||||
|
|
||||||
# Package-Manager
|
|
||||||
|
|
||||||
Import-Module PackageManagement # импортировать модуль
|
|
||||||
Get-Module PackageManagement # информация о модуле
|
|
||||||
Get-Command -Module PackageManagement # отобразить все командлеты модуля
|
|
||||||
Get-Package # отобразить все установленные пакеты PowerShellGallery
|
|
||||||
Get-Package -ProviderName msi,Programs # список установленных программ
|
|
||||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1)
|
|
||||||
Find-PackageProvider # поиск провайдеров
|
|
||||||
Install-PackageProvider PSGallery -force # установить источник
|
|
||||||
Install-PackageProvider NuGet -force
|
|
||||||
Install-PackageProvider Chocolatey -force
|
|
||||||
Get-PackageSource # источники установки пакетов
|
|
||||||
Set-PackageSource -Name PSGallery -Trusted # по умолчанию
|
|
||||||
Find-Package -Name *Veeam* -Source PSGallery # поиск пакетов с указанием источника
|
|
||||||
Install-Package -Name VeeamLogParser -ProviderName PSGallery -scope CurrentUser
|
|
||||||
Get-Command *Veeam*
|
|
||||||
Import-Module -Name VeeamLogParser # загрузить модуль
|
|
||||||
Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands # отобразить список функций
|
|
||||||
|
|
||||||
### winget
|
|
||||||
|
|
||||||
Source: https://github.com/microsoft/winget-cli
|
|
||||||
|
|
||||||
winget list # список установленных пакетов
|
|
||||||
winget search VLC # найти пакет
|
|
||||||
winget show VideoLAN.VLC # информация о пакете
|
|
||||||
winget show VideoLAN.VLC --versions # список доступных версий в репозитории
|
|
||||||
winget install VideoLAN.VLC # установить пакет
|
|
||||||
winget uninstall VideoLAN.VLC # удалить пакет
|
|
||||||
winget download jqlang.jq # загрузкить пакет (https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe)
|
|
||||||
winget install jqlang.jq # добавляет в переменную среду и псевдоним командной строки jq
|
|
||||||
winget uninstall jqlang.jq
|
|
||||||
|
|
||||||
### jqlang-install
|
|
||||||
|
|
||||||
[uri]$url = $($(irm https://api.github.com/repos/jqlang/jq/releases/latest).assets.browser_download_url -match "windows-amd64").ToString() # получить версию latest на GitHub
|
|
||||||
irm $url -OutFile "C:\Windows\System32\jq.exe" # загрузить jq.exe
|
|
||||||
|
|
||||||
### NuGet
|
|
||||||
|
|
||||||
Invoke-RestMethod https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile "$env:TEMP\nuget.exe"
|
|
||||||
Invoke-Expression "$env:TEMP/nuget.exe search Selenium.WebDriver"
|
|
||||||
Set-Location $env:TEMP
|
|
||||||
Invoke-Expression "$env:TEMP/nuget.exe install Selenium.WebDriver"
|
|
||||||
Get-Item *Selenium*
|
|
||||||
|
|
||||||
### Chocolatey
|
|
||||||
|
|
||||||
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'))
|
|
||||||
|
|
||||||
choco -v
|
|
||||||
choco -help
|
|
||||||
choco list
|
|
||||||
choco install adobereader
|
|
||||||
|
|
||||||
### Scoop
|
|
||||||
|
|
||||||
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
||||||
irm get.scoop.sh | iex # установка
|
|
||||||
scoop help
|
|
||||||
scoop search jq
|
|
||||||
scoop info jq
|
|
||||||
(scoop info jq).version
|
|
||||||
scoop cat jq
|
|
||||||
scoop download jq # C:\Users\lifailon\scoop\cache
|
|
||||||
scoop install jq # C:\Users\lifailon\scoop\apps\jq\1.7
|
|
||||||
scoop list
|
|
||||||
(scoop list).version
|
|
||||||
scoop uninstall jq
|
|
||||||
|
|
||||||
# PS2EXE
|
# PS2EXE
|
||||||
|
|
||||||
Install-Module ps2exe -Repository PSGallery
|
Install-Module ps2exe -Repository PSGallery
|
||||||
|
|
@ -4439,68 +4425,71 @@ DBCC FREEPROCCACHE
|
||||||
|
|
||||||
# InfluxDB
|
# InfluxDB
|
||||||
|
|
||||||
https://community.influxdata.com/t/influxdb-1-7-11-download-links/18898 # InfluxDB1
|
Download InfluxDB 1.x Open Source: https://www.influxdata.com/downloads
|
||||||
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-windows-amd64.zip -UseBasicParsing -OutFile influxdb2-2.7.1-windows-amd64.zip # скачать InfluxDB2
|
InfluxDB-Studio: https://github.com/CymaticLabs/InfluxDBStudio
|
||||||
Expand-Archive .\influxdb2-2.7.1-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influxdb\' # разархивировать
|
|
||||||
cd "C:\Program Files\InfluxData\influxdb\influxdb2_windows_amd64"
|
|
||||||
.\influxd.exe
|
|
||||||
.\influxd -h
|
|
||||||
http://localhost:8086/ # базовая настройка
|
|
||||||
API Token: wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIosiCFkhi4EoWfHxwIlAA==
|
|
||||||
|
|
||||||
### CLI Client
|
### Install Windows
|
||||||
wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.7.3-windows-amd64.zip?_gl=1*76m6hu*_ga*MTg0OTc4MzkzNC4xNjg4MTM5NzQ4*_ga_CNWQ54SDD8*MTY4ODE2MjA0My41LjEuMTY4ODE2MzI5Ni4yMi4wLjA. -UseBasicParsing -OutFile influxdb2-client-2.7.3-windows-amd64.zip
|
|
||||||
Expand-Archive .\influxdb2-client-2.7.3-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influx'
|
|
||||||
cd "C:\Program Files\InfluxData\influx"
|
|
||||||
|
|
||||||
.\influx org list # отобразить список пользователей организаций
|
Invoke-RestMethod "https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10_windows_amd64.zip" -OutFile "$home\Downloads\influxdb-1.8.10_windows_amd64.zip"
|
||||||
.\influx auth list # отобразить список пользователей и токенов
|
Expand-Archive "$home\Downloads\influxdb-1.8.10_windows_amd64.zip" -DestinationPath "$home\Documents\"
|
||||||
.\influx v1 shell # консоль
|
Remove-Item "$home\Downloads\influxdb-1.8.10_windows_amd64.zip"
|
||||||
.\influx v1 dbrp list # список БД
|
& "$home\Downloads\influxdb-1.8.10-1\influxd.exe"
|
||||||
|
|
||||||
.\influx config create --config-name main `
|
### Install Ubuntu
|
||||||
--host-url "http://localhost:8086" `
|
|
||||||
--org "test" `
|
|
||||||
--token "wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIosiCFkhi4EoWfHxwIlAA==" `
|
|
||||||
--active # создать и активировать конфигурацию, что бы не передавать свой хост InfluxDB, токен API и организацию с каждой командой
|
|
||||||
|
|
||||||
.\influx config list # список конфигураций
|
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.8.10_amd64.deb
|
||||||
.\influx config list --json | ConvertFrom-Json # отобразить конфигурацию с выводом токена
|
sudo dpkg -i influxdb_1.8.10_amd64.deb
|
||||||
.\influx server-config | ConvertFrom-Json # текущая конфигурация сервера
|
systemctl start influxdb
|
||||||
|
systemctl status influxdb
|
||||||
|
|
||||||
### bucket
|
|
||||||
.\influx bucket create --name test-bucket -c main # создать корзину
|
|
||||||
.\influx write --bucket test-bucket --url https://influx-testdata.s3.amazonaws.com/air-sensor-data-annotated.csv # записать данные из CSV в созданную корзину (Flux language)
|
|
||||||
.\influx query 'from(bucket:\"test-bucket\") |> range(start:-30m) |> mean()' # получить записанные данные
|
|
||||||
|
|
||||||
### user
|
|
||||||
.\influx user create -n root -o test # создать пользователя (-o <org-name>)
|
|
||||||
.\influx user password -n admin -p "password" # изменить/задать пароль
|
|
||||||
.\influx user list # список пользователей
|
|
||||||
influx user delete -i <user-id>
|
|
||||||
|
|
||||||
### deb
|
|
||||||
|
|
||||||
wget https://repos.influxdata.com/debian/packages/influxdb2-2.7.1-amd64.deb
|
|
||||||
dpkg -i influxdb2-2.7.1-amd64.deb
|
|
||||||
systemctl start influxd.service
|
|
||||||
systemctl status influxd.service
|
|
||||||
netstat -natpl | grep 80[8-9][3-9]
|
|
||||||
ps aux | grep influxdb | grep -Ev "grep"
|
ps aux | grep influxdb | grep -Ev "grep"
|
||||||
|
netstat -natpl | grep 80[8-9][3-9]
|
||||||
|
|
||||||
nano /etc/influxdb/config.toml # v2
|
### API
|
||||||
http-bind-address = "192.168.3.101:8086"
|
|
||||||
|
|
||||||
nano /etc/influxdb/influxdb.conf # v1
|
nano /etc/influxdb/influxdb.conf
|
||||||
|
|
||||||
[http]
|
[http]
|
||||||
enabled = true # включить API
|
enabled = true
|
||||||
bind-address = "192.168.3.104:8086"
|
bind-address = ":8086"
|
||||||
auth-enabled = true # включить авторизацию
|
auth-enabled = false
|
||||||
|
|
||||||
|
systemctl restart influxdb
|
||||||
|
|
||||||
|
### Chronograf
|
||||||
|
|
||||||
|
wget https://dl.influxdata.com/chronograf/releases/chronograf-1.10.2_windows_amd64.zip -UseBasicParsing -OutFile chronograf-1.10.2_windows_amd64.zip
|
||||||
|
Expand-Archive .\chronograf-1.10.2_windows_amd64.zip -DestinationPath 'C:\Program Files\InfluxData\chronograf\'
|
||||||
|
|
||||||
|
wget https://dl.influxdata.com/chronograf/releases/chronograf_1.10.2_amd64.deb
|
||||||
|
sudo dpkg -i chronograf_1.10.2_amd64.deb
|
||||||
|
systemctl status influxdb
|
||||||
|
http://192.168.3.102:8888
|
||||||
|
|
||||||
|
### Grafana
|
||||||
|
|
||||||
|
Download: https://grafana.com/grafana/download
|
||||||
|
|
||||||
|
invoke-RestMethod https://dl.grafana.com/enterprise/release/grafana-enterprise-10.3.1.windows-amd64.msi -OutFile "$home\Download\grafana.msi"
|
||||||
|
|
||||||
|
apt-get install -y adduser libfontconfig1 musl
|
||||||
|
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.3.1_amd64.deb
|
||||||
|
dpkg -i grafana-enterprise_10.3.1_amd64.deb
|
||||||
|
systemctl start grafana-server
|
||||||
|
systemctl status grafana-server
|
||||||
|
|
||||||
|
### CLI Client
|
||||||
|
|
||||||
apt install influxdb-client
|
apt install influxdb-client
|
||||||
influx
|
influx
|
||||||
influx --host 192.168.3.104 --username admin --password password
|
influx --host 192.168.3.102 --username admin --password password
|
||||||
|
|
||||||
|
$influx_client_exec = "$home\Documents\influxdb-1.8.10-1\influx.exe"
|
||||||
|
& $influx_client_exec -host 192.168.3.102 -port 8086
|
||||||
|
help
|
||||||
|
show databases
|
||||||
|
use PowerShell
|
||||||
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m
|
||||||
|
|
||||||
### USERS
|
### USERS
|
||||||
|
|
||||||
|
|
@ -4522,6 +4511,15 @@ USE powershell
|
||||||
SHOW measurements # отобразить все таблицы
|
SHOW measurements # отобразить все таблицы
|
||||||
INSERT performance,host=console,counter=CPU value=0.88 # записать данные в таблицу performance
|
INSERT performance,host=console,counter=CPU value=0.88 # записать данные в таблицу performance
|
||||||
|
|
||||||
|
### MEASUREMENT
|
||||||
|
|
||||||
|
SHOW TAG KEYS FROM "HardwareMonitor" # отобразить все тэги в таблице
|
||||||
|
SHOW TAG VALUES FROM "HardwareMonitor" WITH KEY = "HardwareName" # отобразить все значения указанного тэга
|
||||||
|
SHOW FIELD KEYS FROM "HardwareMonitor" # отобразить все Field Tags и их тип данных
|
||||||
|
SHOW SERIES FROM "HardwareMonitor" # отобразить список всех уникальных серий в указанной таблице. Серия - это набор точек данных, которые имеют одинаковые значения для всех тегов, за исключением времени.
|
||||||
|
DROP SERIES FROM "HardwareMonitor" # очистить все данные в таблице
|
||||||
|
DROP MEASUREMENT "HardwareMonitor" # удалить таблицу
|
||||||
|
|
||||||
### SELECT/WHERE
|
### SELECT/WHERE
|
||||||
|
|
||||||
SELECT * FROM performance # отобразить все данные в таблице
|
SELECT * FROM performance # отобразить все данные в таблице
|
||||||
|
|
@ -4536,25 +4534,34 @@ DELETE FROM performance WHERE time < now() -24h # удалить данные с
|
||||||
|
|
||||||
### REGEX
|
### REGEX
|
||||||
|
|
||||||
SELECT * FROM "performance" WHERE host =~ /.*-Pro/ # приблизительно равно любое значение и на конце -Pro
|
SELECT * FROM "win_pdisk" WHERE instance =~/.*C:/ and time > now() - 5m -- и
|
||||||
SELECT * FROM "win_pdisk" WHERE instance =~/.*C:/ and time > now() - 5m # и
|
SELECT * FROM "win_pdisk" WHERE instance =~/.*E:/ or instance =~ /.*F:/ -- или
|
||||||
SELECT * FROM "win_pdisk" WHERE instance =~/.*E:/ or instance =~ /.*F:/ # или
|
SELECT * FROM "win_pdisk" WHERE instance !~ /.*Total/ -- не равно (исключить)
|
||||||
SELECT * FROM "win_pdisk" WHERE instance !~ /.*Total/ # не равно (исключить)
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and HardwareName =~ /Intel/ -- приблизительно равно
|
||||||
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and HardwareName =~ /Intel.+i7/ -- эквивалент 12th_Gen_Intel_Core_i7-1260P
|
||||||
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and HardwareName =~ /^Intel/ -- начинается на Intel
|
||||||
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and HardwareName =~ /00$/ -- заканчивается на 00
|
||||||
|
|
||||||
### GROUP BY tag_key
|
### GROUP BY tag_key
|
||||||
|
|
||||||
SELECT * FROM "win_pdisk" WHERE instance !~ /.*Total/ and instance !~/.*C:/ GROUP BY instance # группировать результаты по тегу
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and SensorName = 'Temperature' GROUP BY HardwareName -- создать уникальные группы по тэгу HardwareName
|
||||||
|
SELECT * FROM "HardwareMonitor" WHERE time > now() - 5m and SensorName = 'Temperature' GROUP BY Host,HardwareName -- больше групп по двум тэгаам
|
||||||
|
|
||||||
### Functions(field_key)
|
### Functions(field_key)
|
||||||
https://docs.influxdata.com/influxdb/v1.8/query_language/functions/
|
|
||||||
|
|
||||||
SELECT instance,LAST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance # отфильтровать вывод по последнему/текущему значению
|
Functions: https://docs.influxdata.com/influxdb/v1.8/query_language/functions
|
||||||
SELECT instance,FIRST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance # отфильтровать вывод по первому значению за весь или указанный отрезок времени
|
|
||||||
SELECT instance,MIN(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance # отфильтровать вывод с отображением минимального значения
|
SELECT instance,LAST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance -- отфильтровать вывод по последнему/текущему значению
|
||||||
SELECT instance,MAX(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance # отфильтровать вывод с отображением максимального значения
|
SELECT instance,FIRST(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance -- отфильтровать вывод по первому значению за весь или указанный отрезок времени
|
||||||
SELECT SUM(Bytes_Received_persec) FROM "win_net" GROUP BY instance # суммах всех значений
|
SELECT instance,MIN(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance -- отфильтровать вывод с отображением минимального значения
|
||||||
SELECT COUNT(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec >= 0 GROUP BY instance # кол-во данных, где значение выше или равно 0
|
SELECT instance,MAX(Avg._Disk_Read_Queue_Length) FROM "win_pdisk" GROUP BY instance -- отфильтровать вывод с отображением максимального значения
|
||||||
SELECT MEAN(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec < 1000 GROUP BY instance # среднее значение данных с показателем от 0 до 1000 (509)
|
SELECT SUM(Bytes_Received_persec) FROM "win_net" GROUP BY instance -- суммах всех значений
|
||||||
|
SELECT COUNT(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec >= 0 GROUP BY instance -- кол-во данных, где значение выше или равно 0
|
||||||
|
SELECT MEAN(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec < 1000 GROUP BY instance -- среднее значение данных с показателем от 0 до 1000 (509)
|
||||||
|
|
||||||
|
SELECT *,MAX(Value) FROM "HardwareMonitor" WHERE time > now() -1h GROUP BY SensorName,Host -- создать группы для выявления максимального значения значения стобца Value каждого тэга SensorName и хоста за последний час
|
||||||
|
SELECT *,MAX(Value) FROM "HardwareMonitor" WHERE time > now() -1h and SensorName = 'CPU_Package' GROUP BY Host -- масимальное значение CPU_Package за последний час для каждого хоста
|
||||||
|
SELECT MEAN(Value) FROM "HardwareMonitor" WHERE time > now() -1h and SensorName = 'CPU_Package' GROUP BY Host -- среднее значение CPU_Package за последний час
|
||||||
|
|
||||||
### POLICY
|
### POLICY
|
||||||
|
|
||||||
|
|
@ -4563,6 +4570,20 @@ CREATE RETENTION POLICY del2h ON powershell DURATION 2h REPLICATION 1 # созд
|
||||||
CREATE RETENTION POLICY del6h ON powershell DURATION 6h REPLICATION 1 SHARD DURATION 2h # указать период хранения 6 часов + 2 часа до очистки (по умолчанию 1ч или больше)
|
CREATE RETENTION POLICY del6h ON powershell DURATION 6h REPLICATION 1 SHARD DURATION 2h # указать период хранения 6 часов + 2 часа до очистки (по умолчанию 1ч или больше)
|
||||||
ALTER RETENTION POLICY del6h ON powershell DEFAULT # изменить (ALTER) политику хранения для БД на del6h (DEFAULT)
|
ALTER RETENTION POLICY del6h ON powershell DEFAULT # изменить (ALTER) политику хранения для БД на del6h (DEFAULT)
|
||||||
DROP RETENTION POLICY del2d ON powershell # удаление политики хранения приводит к безвозвратному удалению всех измерений (таблиц) и данных, хранящихся в политике хранения
|
DROP RETENTION POLICY del2d ON powershell # удаление политики хранения приводит к безвозвратному удалению всех измерений (таблиц) и данных, хранящихся в политике хранения
|
||||||
|
SHOW RETENTION POLICIES ON PowerShell # отобразить действующие политики базы данных PowerShell
|
||||||
|
|
||||||
|
$data = Invoke-RestMethod http://192.168.3.102:8086/query?q="SHOW RETENTION POLICIES ON PowerShell"
|
||||||
|
$col = $data.results.series.columns
|
||||||
|
$val = $data.results.series.values
|
||||||
|
$mass = @()
|
||||||
|
$mass += [string]$col
|
||||||
|
foreach ($v in $val) {
|
||||||
|
$mass += [string]$v
|
||||||
|
}
|
||||||
|
$mass = $mass -replace '^','"'
|
||||||
|
$mass = $mass -replace '$','"'
|
||||||
|
$mass = $mass -replace '\s','","'
|
||||||
|
$mass | ConvertFrom-Csv
|
||||||
|
|
||||||
### API POST
|
### API POST
|
||||||
|
|
||||||
|
|
@ -5717,9 +5738,167 @@ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters # изме
|
||||||
MaxFieldLength увеличить до 0000ffff (65535)
|
MaxFieldLength увеличить до 0000ffff (65535)
|
||||||
MaxRequestBytes увеличить до 0000ffff (65535)
|
MaxRequestBytes увеличить до 0000ffff (65535)
|
||||||
|
|
||||||
|
# PackageManagement
|
||||||
|
|
||||||
|
Import-Module PackageManagement # импортировать модуль
|
||||||
|
Get-Module PackageManagement # информация о модуле
|
||||||
|
Get-Command -Module PackageManagement # отобразить все командлеты модуля
|
||||||
|
Get-Package # отобразить все установленные пакеты PowerShellGallery
|
||||||
|
Get-Package -ProviderName msi,Programs # список установленных программ
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1)
|
||||||
|
Find-PackageProvider # поиск провайдеров
|
||||||
|
Install-PackageProvider PSGallery -force # установить источник
|
||||||
|
Install-PackageProvider NuGet -force
|
||||||
|
Install-PackageProvider Chocolatey -force
|
||||||
|
Get-PackageSource # источники установки пакетов
|
||||||
|
Set-PackageSource -Name PSGallery -Trusted # по умолчанию
|
||||||
|
Find-Package -Name *Veeam* -Source PSGallery # поиск пакетов с указанием источника
|
||||||
|
Install-Package -Name VeeamLogParser -ProviderName PSGallery -scope CurrentUser
|
||||||
|
Get-Command *Veeam*
|
||||||
|
Import-Module -Name VeeamLogParser # загрузить модуль
|
||||||
|
Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands # отобразить список функций
|
||||||
|
|
||||||
|
### winget
|
||||||
|
|
||||||
|
Source: https://github.com/microsoft/winget-cli
|
||||||
|
Web: https://winget.run
|
||||||
|
|
||||||
|
winget list # список установленных пакетов
|
||||||
|
winget search VLC # найти пакет
|
||||||
|
winget show VideoLAN.VLC # информация о пакете
|
||||||
|
winget show VideoLAN.VLC --versions # список доступных версий в репозитории
|
||||||
|
winget install VideoLAN.VLC # установить пакет
|
||||||
|
winget uninstall VideoLAN.VLC # удалить пакет
|
||||||
|
winget download jqlang.jq # загрузкить пакет (https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe)
|
||||||
|
winget install jqlang.jq # добавляет в переменную среду и псевдоним командной строки jq
|
||||||
|
winget uninstall jqlang.jq
|
||||||
|
|
||||||
|
### jqlang-install
|
||||||
|
|
||||||
|
[uri]$url = $($(irm https://api.github.com/repos/jqlang/jq/releases/latest).assets.browser_download_url -match "windows-amd64").ToString() # получить версию latest на GitHub
|
||||||
|
irm $url -OutFile "C:\Windows\System32\jq.exe" # загрузить jq.exe
|
||||||
|
|
||||||
|
### Scoop
|
||||||
|
|
||||||
|
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||||
|
irm get.scoop.sh | iex # установка
|
||||||
|
scoop help
|
||||||
|
scoop search jq
|
||||||
|
scoop info jq
|
||||||
|
(scoop info jq).version
|
||||||
|
scoop cat jq
|
||||||
|
scoop download jq # C:\Users\lifailon\scoop\cache
|
||||||
|
scoop install jq # C:\Users\lifailon\scoop\apps\jq\1.7
|
||||||
|
scoop list
|
||||||
|
(scoop list).version
|
||||||
|
scoop uninstall jq
|
||||||
|
|
||||||
|
### Chocolatey
|
||||||
|
|
||||||
|
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'))
|
||||||
|
|
||||||
|
choco -v
|
||||||
|
choco -help
|
||||||
|
choco list
|
||||||
|
choco install adobereader
|
||||||
|
|
||||||
|
# NuGet
|
||||||
|
|
||||||
|
Invoke-RestMethod https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile "$home\Documents\nuget.exe"
|
||||||
|
Invoke-Expression "$home\Documents\nuget.exe search Selenium.WebDriver"
|
||||||
|
Invoke-Expression "$home\Documents\nuget.exe install Selenium.WebDriver"
|
||||||
|
Get-Item $home\Documents\*Selenium*
|
||||||
|
|
||||||
|
& "$home\Documents\nuget.exe" list console-translate
|
||||||
|
$nuget_api_key = "<API-KEY>"
|
||||||
|
$source = "https://api.nuget.org/v3/index.json"
|
||||||
|
$Name = "Console-Translate"
|
||||||
|
$path = "$home\Documents\$Name"
|
||||||
|
New-Item -Type Directory $path
|
||||||
|
Copy-Item "$home\Documents\Git\$Name\$Name\0.2\*" "$path\"
|
||||||
|
Copy-Item "$home\Documents\Git\$Name\LICENSE" "$path\"
|
||||||
|
Copy-Item "$home\Documents\Git\$Name\README.md" "$path\"
|
||||||
|
|
||||||
|
'<?xml version="1.0"?>
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>Console-Translate</id>
|
||||||
|
<version>0.2.2</version>
|
||||||
|
<authors>Lifailon</authors>
|
||||||
|
<owners>Lifailon</owners>
|
||||||
|
<description>Cross-platform client for translating text in the console, uses API Google (edded public free token), MyMemory and DeepLX (no token required)</description>
|
||||||
|
<tags>PowerShell, Module, Translate, api</tags>
|
||||||
|
<projectUrl>https://github.com/Lifailon/Console-Translate</projectUrl>
|
||||||
|
<contentFiles>
|
||||||
|
<files include="Console-Translate.psm1" buildAction="Content" />
|
||||||
|
<files include="Console-Translate.psd1" buildAction="Content" />
|
||||||
|
<files include="lang-iso-639-1.csv" buildAction="Content" />
|
||||||
|
<files include="README.md" buildAction="Content" />
|
||||||
|
<files include="LICENSE" buildAction="Content" />
|
||||||
|
</contentFiles>
|
||||||
|
</metadata>
|
||||||
|
</package>' > "$path\$Name.nuspec"
|
||||||
|
|
||||||
|
Set-Location $path
|
||||||
|
& "$home\Documents\nuget.exe" pack "$path\$Name.nuspec"
|
||||||
|
& "$home\Documents\nuget.exe" push "$path\$Name.0.2.2.nupkg" -ApiKey $nuget_api_key -Source $source
|
||||||
|
& "$home\Documents\nuget.exe" push "$path\$Name.0.2.2.nupkg" -ApiKey $nuget_api_key -Source $source -SkipDuplicate
|
||||||
|
|
||||||
|
Install-Package Console-Translate -Source nuget.org
|
||||||
|
Get-Package Console-Translate | select *
|
||||||
|
|
||||||
|
Register-PSRepository -Name "NuGet" -SourceLocation "https://www.nuget.org/api/v2" -InstallationPolicy Trusted
|
||||||
|
Get-PSRepository
|
||||||
|
Find-Module -Name Console-Translate
|
||||||
|
Install-Module Console-Translate -Repository NuGet
|
||||||
|
|
||||||
|
& "$home\Documents\nuget.exe" delete Console-Translate 0.2.0 -Source https://api.nuget.org/v3/index.json -ApiKey $nuget_api_key -NoPrompt
|
||||||
|
|
||||||
|
# Git
|
||||||
|
|
||||||
|
git --version
|
||||||
|
git config --global user.name "Lifailon" # добавить имя для коммитов
|
||||||
|
git config --global user.email "lifailon@yandex.ru"
|
||||||
|
git config --global --edit
|
||||||
|
ssh-keygen -t rsa -b 4096
|
||||||
|
Get-Service | where name -match "ssh-agent" | Set-Service -StartupType Automatic
|
||||||
|
Get-Service | where name -match "ssh-agent" | Start-Service
|
||||||
|
Get-Service | where name -match "ssh-agent" | select Name,Status,StartType
|
||||||
|
ssh-agent
|
||||||
|
ssh-add C:\Users\Lifailon\.ssh\id_rsa
|
||||||
|
cat ~\.ssh\id_rsa.pub | Set-Clipboard # copy to https://github.com/settings/keys
|
||||||
|
cd $home\Documents\Git
|
||||||
|
git clone git@github.com:Lifailon/PowerShell-Commands
|
||||||
|
cd PowerShell-Commands
|
||||||
|
git grep powershell # поиск текста в файлах
|
||||||
|
git pull # синхронизировать изменения из хранилища
|
||||||
|
git status # отобразить статус изменений по файлам
|
||||||
|
git diff # отобразить изменения построчно
|
||||||
|
git add . # добавить (проиндексировать) изменения во всех файлах
|
||||||
|
git commit -m "added file and changed file" # сохранить изменения с комментарием
|
||||||
|
git push # синхронизировать локальные изменения с репозиторием
|
||||||
|
git branch dev # создать новую ветку
|
||||||
|
git switch dev # переключиться на другую ветку
|
||||||
|
git push --set-upstream origin dev # добавить ветку
|
||||||
|
git branch -d dev # удалить ветку
|
||||||
|
git diff rsa # сравнить файлы текущей ветки с файлами в указанной ветки rsa
|
||||||
|
git merge dev # слияние текущей ветки (rsa/master) с указанной (dev)
|
||||||
|
git log --oneline --all # лог коммитов
|
||||||
|
git log --graph # коммиты и следование веток
|
||||||
|
git show d01f09dead3a6a8d75dda848162831c58ca0ee13 # отобразить подробный лог по номеру коммита
|
||||||
|
git checkout filename # откатить изменения, если не было команды add
|
||||||
|
git checkout d01f09dead3a6a8d75dda848162831c58ca0ee13 # переключить локальные файлы рабочей копии на указанный коммит (изменить HEAD на указанный коммит)
|
||||||
|
git reset HEAD filename # откатить изменения последнего индекса, если был add но не было commit, тем самым вернуться до последней зафиксированный версии (коммита) и потом выполнить checkout
|
||||||
|
git reset --mixed HEAD filename # изменения, содержащиеся в отменяемом коммите, не должны исчезнуть, они будут сохранены в виде локальных изменений в рабочей копии
|
||||||
|
git restore filename # отменить все локальные изменения в рабочей копии
|
||||||
|
git restore --source d01f09dead3a6a8d75dda848162831c58ca0ee13 filename # восстановить файл на указанную версию по хэшу индентификатора коммита
|
||||||
|
git revert HEAD --no-edit # отменить последний коммит, без указания комментария (события записываются в git log)
|
||||||
|
git reset --hard d01f09dead3a6a8d75dda848162831c58ca0ee13 # удалить все коммиты до указанного (и откатиться до него)
|
||||||
|
|
||||||
# DSC
|
# DSC
|
||||||
|
|
||||||
Import-Module PSDesiredStateConfiguration
|
Import-Module PSDesiredStateConfiguration
|
||||||
|
Get-Command -Module PSDesiredStateConfiguration
|
||||||
(Get-Module PSDesiredStateConfiguration).ExportedCommands
|
(Get-Module PSDesiredStateConfiguration).ExportedCommands
|
||||||
Get-DscLocalConfigurationManager
|
Get-DscLocalConfigurationManager
|
||||||
|
|
||||||
|
|
@ -5780,46 +5959,33 @@ Get-Service -ComputerName $srv | ? name -match w32time # Start-Service
|
||||||
icm $srv {Get-Process | ? ProcessName -match calc} | ft # Stop-Process -Force
|
icm $srv {Get-Process | ? ProcessName -match calc} | ft # Stop-Process -Force
|
||||||
icm $srv {ls C:\ | ? name -match Temp} | ft # rm
|
icm $srv {ls C:\ | ? name -match Temp} | ft # rm
|
||||||
|
|
||||||
# Git
|
Configuration InstallPowerShellCore {
|
||||||
|
Import-DscResource -ModuleName PSDesiredStateConfiguration
|
||||||
|
Node localhost {
|
||||||
|
Script InstallPowerShellCore {
|
||||||
|
GetScript = {
|
||||||
|
return @{
|
||||||
|
GetScript = $GetScript
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetScript = {
|
||||||
|
[string]$url = $(Invoke-RestMethod https://api.github.com/repos/PowerShell/PowerShell/releases/latest).assets.browser_download_url -match "win-x64.zip"
|
||||||
|
$downloadPath = "$home\Downloads\PowerShell.zip"
|
||||||
|
$installPath = "$env:ProgramFiles\PowerShell\7"
|
||||||
|
Invoke-WebRequest -Uri $url -OutFile $downloadPath
|
||||||
|
Expand-Archive -Path $downloadPath -DestinationPath $installPath -Force
|
||||||
|
}
|
||||||
|
TestScript = {
|
||||||
|
return Test-Path "$env:ProgramFiles\PowerShell\7\pwsh.exe"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
git --version
|
$Path = (InstallPowerShellCore).DirectoryName
|
||||||
git config --global user.name "Lifailon" # добавить имя для коммитов
|
Test-DscConfiguration -Path $Path
|
||||||
git config --global user.email "lifailon@yandex.ru"
|
Start-DscConfiguration -Path $path -Wait -Verbose
|
||||||
git config --global --edit
|
Get-Job
|
||||||
ssh-keygen -t rsa -b 4096
|
|
||||||
Get-Service | where name -match "ssh-agent" | Set-Service -StartupType Automatic
|
|
||||||
Get-Service | where name -match "ssh-agent" | Start-Service
|
|
||||||
Get-Service | where name -match "ssh-agent" | select Name,Status,StartType
|
|
||||||
ssh-agent
|
|
||||||
ssh-add C:\Users\Lifailon\.ssh\id_rsa
|
|
||||||
cat ~\.ssh\id_rsa.pub | Set-Clipboard # copy to https://github.com/settings/keys
|
|
||||||
cd $home\Documents\Git
|
|
||||||
git clone git@github.com:Lifailon/PowerShell-Commands
|
|
||||||
cd PowerShell-Commands
|
|
||||||
git grep powershell # поиск текста в файлах
|
|
||||||
git pull # синхронизировать изменения из хранилища
|
|
||||||
git status # отобразить статус изменений по файлам
|
|
||||||
git diff # отобразить изменения построчно
|
|
||||||
git add . # добавить (проиндексировать) изменения во всех файлах
|
|
||||||
git commit -m "added file and changed file" # сохранить изменения с комментарием
|
|
||||||
git push # синхронизировать локальные изменения с репозиторием
|
|
||||||
git branch dev # создать новую ветку
|
|
||||||
git switch dev # переключиться на другую ветку
|
|
||||||
git push --set-upstream origin dev # добавить ветку
|
|
||||||
git branch -d dev # удалить ветку
|
|
||||||
git diff rsa # сравнить файлы текущей ветки с файлами в указанной ветки rsa
|
|
||||||
git merge dev # слияние текущей ветки (rsa/master) с указанной (dev)
|
|
||||||
git log --oneline --all # лог коммитов
|
|
||||||
git log --graph # коммиты и следование веток
|
|
||||||
git show d01f09dead3a6a8d75dda848162831c58ca0ee13 # отобразить подробный лог по номеру коммита
|
|
||||||
git checkout filename # откатить изменения, если не было команды add
|
|
||||||
git checkout d01f09dead3a6a8d75dda848162831c58ca0ee13 # переключить локальные файлы рабочей копии на указанный коммит (изменить HEAD на указанный коммит)
|
|
||||||
git reset HEAD filename # откатить изменения последнего индекса, если был add но не было commit, тем самым вернуться до последней зафиксированный версии (коммита) и потом выполнить checkout
|
|
||||||
git reset --mixed HEAD filename # изменения, содержащиеся в отменяемом коммите, не должны исчезнуть, они будут сохранены в виде локальных изменений в рабочей копии
|
|
||||||
git restore filename # отменить все локальные изменения в рабочей копии
|
|
||||||
git restore --source d01f09dead3a6a8d75dda848162831c58ca0ee13 filename # восстановить файл на указанную версию по хэшу индентификатора коммита
|
|
||||||
git revert HEAD --no-edit # отменить последний коммит, без указания комментария (события записываются в git log)
|
|
||||||
git reset --hard d01f09dead3a6a8d75dda848162831c58ca0ee13 # удалить все коммиты до указанного (и откатиться до него)
|
|
||||||
|
|
||||||
# Ansible
|
# Ansible
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue