Added nuget pack, influxdb commands, posh theme, dsc example
This commit is contained in:
parent
320872b22c
commit
ae6e331262
1 changed files with 349 additions and 183 deletions
532
README.md
532
README.md
|
|
@ -8,7 +8,9 @@
|
||||||
📢 Статья на Habr: [PowerShell и его возможности](https://habr.com/ru/articles/782592/)
|
📢 Статья на Habr: [PowerShell и его возможности](https://habr.com/ru/articles/782592/)
|
||||||
|
|
||||||
- [Help](#help)
|
- [Help](#help)
|
||||||
|
- [oh-my-posh](#oh-my-posh)
|
||||||
- [Object](#object)
|
- [Object](#object)
|
||||||
|
- [npp](#npp)
|
||||||
- [Regex](#regex)
|
- [Regex](#regex)
|
||||||
- [DataType](#datatype)
|
- [DataType](#datatype)
|
||||||
- [Bit](#bit)
|
- [Bit](#bit)
|
||||||
|
|
@ -35,7 +37,6 @@
|
||||||
- [DHCP](#dhcpserver)
|
- [DHCP](#dhcpserver)
|
||||||
- [DFS](#dfs)
|
- [DFS](#dfs)
|
||||||
- [StorageReplica](#storagereplica)
|
- [StorageReplica](#storagereplica)
|
||||||
- [Package-Manager](#package-manager)
|
|
||||||
- [PS2EXE](#ps2exe)
|
- [PS2EXE](#ps2exe)
|
||||||
- [NSSM](#nssm)
|
- [NSSM](#nssm)
|
||||||
- [Jobs](#jobs)
|
- [Jobs](#jobs)
|
||||||
|
|
@ -85,8 +86,10 @@
|
||||||
- [Proxy](#proxy)
|
- [Proxy](#proxy)
|
||||||
- [OpenSSH](#openssh)
|
- [OpenSSH](#openssh)
|
||||||
- [WinRM](#winrm)
|
- [WinRM](#winrm)
|
||||||
- [DSC](#dsc)
|
- [PackageManagement](#packagemanagement)
|
||||||
|
- [NuGet](#nuget)
|
||||||
- [Git](#git)
|
- [Git](#git)
|
||||||
|
- [DSC](#dsc)
|
||||||
- [Ansible](#ansible)
|
- [Ansible](#ansible)
|
||||||
- [GigaChat](#GigaChat)
|
- [GigaChat](#GigaChat)
|
||||||
- [YandexGPT](#YandexGPT)
|
- [YandexGPT](#YandexGPT)
|
||||||
|
|
@ -125,9 +128,35 @@
|
||||||
`$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
|
||||||
|
```PowerShell
|
||||||
|
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 @@
|
||||||
`$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 @@
|
||||||
`[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 @@
|
||||||
`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 @@ ps | Sort-Object -Descending CPU | select -first 10 ProcessName, # сортир
|
||||||
`=>` есть изменения в $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,22 +328,24 @@ ps | Sort-Object -Descending CPU | select -first 10 ProcessName, # сортир
|
||||||
`(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
|
||||||
|
```PowerShell
|
||||||
`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 @@ $ # Конец строки
|
||||||
`$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 @@ foreach ($p in $gp) {
|
||||||
`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 @@ foreach ($p in $gp) {
|
||||||
`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 @@ foreach ($p in $gp) {
|
||||||
`(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 @@ foreach ($p in $gp) {
|
||||||
`[]` поиск совпадения любой буквы, например, [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 @@ foreach ($p in $gp) {
|
||||||
`$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 @@ foreach ($p in $gp) {
|
||||||
`[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 @@ foreach ($p in $gp) {
|
||||||
`[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 @@ HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | Out-GridVie
|
||||||
`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
|
|
||||||
```PowerShell
|
|
||||||
[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
|
|
||||||
```PowerShell
|
|
||||||
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
|
|
||||||
```PowerShell
|
|
||||||
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,69 +4425,72 @@ MODIFY FILE (NAME = temp2, FILENAME = 'F:\tempdb_mssql_2.ndf' , SIZE = 1048576KB
|
||||||
|
|
||||||
# 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` \
|
```PowerShell
|
||||||
`Expand-Archive .\influxdb2-client-2.7.3-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influx'` \
|
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"
|
||||||
`cd "C:\Program Files\InfluxData\influx"`
|
Expand-Archive "$home\Downloads\influxdb-1.8.10_windows_amd64.zip" -DestinationPath "$home\Documents\"
|
||||||
|
Remove-Item "$home\Downloads\influxdb-1.8.10_windows_amd64.zip"
|
||||||
`.\influx org list` отобразить список пользователей организаций \
|
& "$home\Downloads\influxdb-1.8.10-1\influxd.exe"
|
||||||
`.\influx auth list` отобразить список пользователей и токенов \
|
|
||||||
`.\influx v1 shell` консоль \
|
|
||||||
`.\influx v1 dbrp list` список БД
|
|
||||||
```
|
```
|
||||||
.\influx config create --config-name main `
|
### Install Ubuntu
|
||||||
--host-url "http://localhost:8086" `
|
```Bash
|
||||||
--org "test" `
|
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.8.10_amd64.deb
|
||||||
--token "wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIosiCFkhi4EoWfHxwIlAA==" `
|
sudo dpkg -i influxdb_1.8.10_amd64.deb
|
||||||
--active` создать и активировать конфигурацию, что бы не передавать свой хост InfluxDB, токен API и организацию с каждой командой
|
systemctl start influxdb
|
||||||
|
systemctl status influxdb
|
||||||
|
|
||||||
|
ps aux | grep influxdb | grep -Ev "grep"
|
||||||
|
netstat -natpl | grep 80[8-9][3-9]
|
||||||
```
|
```
|
||||||
`.\influx config list` список конфигураций \
|
### API
|
||||||
`.\influx config list --json | ConvertFrom-Json` отобразить конфигурацию с выводом токена \
|
```Bash
|
||||||
`.\influx server-config | ConvertFrom-Json` текущая конфигурация сервера
|
nano /etc/influxdb/influxdb.conf
|
||||||
|
|
||||||
### 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"`
|
|
||||||
|
|
||||||
`nano /etc/influxdb/config.toml` v2 \
|
|
||||||
`http-bind-address = "192.168.3.101:8086"`
|
|
||||||
|
|
||||||
`nano /etc/influxdb/influxdb.conf` v1
|
|
||||||
```
|
|
||||||
[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"`
|
||||||
|
```Bash
|
||||||
|
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`
|
||||||
|
```PowerShell
|
||||||
|
$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
|
||||||
|
|
||||||
`SHOW USERS` отобразить пользователей и их права доступа \
|
`SHOW USERS` отобразить пользователей и их права доступа \
|
||||||
|
|
@ -4522,6 +4511,15 @@ API Token: `wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIos
|
||||||
`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,17 +4534,22 @@ API Token: `wqsqOIR3d-PYmiJQYir4sX_NjtKKyh8ZWbfX1ZlfEEpAH3Z2ylcHx3XZzUA36XO3HIos
|
||||||
|
|
||||||
### 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/ \
|
|
||||||
|
[Functions](https://docs.influxdata.com/influxdb/v1.8/query_language/functions)
|
||||||
|
|
||||||
`SELECT instance,LAST(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,FIRST(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` отфильтровать вывод по первому значению за весь или указанный отрезок времени \
|
||||||
|
|
@ -4556,14 +4559,32 @@ https://docs.influxdata.com/influxdb/v1.8/query_language/functions/ \
|
||||||
`SELECT COUNT(Bytes_Received_persec) FROM "win_net" WHERE Bytes_Received_persec >= 0 GROUP BY instance` кол-во данных, где значение выше или равно 0 \
|
`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 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
|
||||||
|
|
||||||
`CREATE DATABASE powershell WITH DURATION 48h REPLICATION 1 NAME "del2d"` создать БД с политикой хранения 2 дня \
|
`CREATE DATABASE powershell WITH DURATION 48h REPLICATION 1 NAME "del2d"` создать БД с политикой хранения 2 дня \
|
||||||
`CREATE RETENTION POLICY del2h ON powershell DURATION 2h REPLICATION 1` создать новую политику хранения для БД \
|
`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
|
||||||
|
```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
|
||||||
|
|
||||||
Вместо таблиц в InfluxDB имеются измерения. Вместо столбцов в ней есть теги и поля.
|
Вместо таблиц в InfluxDB имеются измерения. Вместо столбцов в ней есть теги и поля.
|
||||||
|
|
@ -5717,9 +5738,167 @@ New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_se
|
||||||
`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
|
||||||
|
```PowerShell
|
||||||
|
[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
|
||||||
|
```PowerShell
|
||||||
|
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\"`
|
||||||
|
```PowerShell
|
||||||
|
'<?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`
|
||||||
|
|
||||||
|
|
@ -5779,47 +5958,34 @@ Configuration DSConfigurationProxy
|
||||||
`Get-Service -ComputerName $srv | ? name -match w32time # Start-Service` \
|
`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`
|
||||||
|
```PowerShell
|
||||||
# Git
|
Configuration InstallPowerShellCore {
|
||||||
|
Import-DscResource -ModuleName PSDesiredStateConfiguration
|
||||||
`git --version` \
|
Node localhost {
|
||||||
`git config --global user.name "Lifailon"` добавить имя для коммитов \
|
Script InstallPowerShellCore {
|
||||||
`git config --global user.email "lifailon@yandex.ru"` \
|
GetScript = {
|
||||||
`git config --global --edit` \
|
return @{
|
||||||
`ssh-keygen -t rsa -b 4096` \
|
GetScript = $GetScript
|
||||||
`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` \
|
SetScript = {
|
||||||
`ssh-agent` \
|
[string]$url = $(Invoke-RestMethod https://api.github.com/repos/PowerShell/PowerShell/releases/latest).assets.browser_download_url -match "win-x64.zip"
|
||||||
`ssh-add C:\Users\Lifailon\.ssh\id_rsa` \
|
$downloadPath = "$home\Downloads\PowerShell.zip"
|
||||||
`cat ~\.ssh\id_rsa.pub | Set-Clipboard` copy to https://github.com/settings/keys \
|
$installPath = "$env:ProgramFiles\PowerShell\7"
|
||||||
`cd $home\Documents\Git` \
|
Invoke-WebRequest -Uri $url -OutFile $downloadPath
|
||||||
`git clone git@github.com:Lifailon/PowerShell-Commands` \
|
Expand-Archive -Path $downloadPath -DestinationPath $installPath -Force
|
||||||
`cd PowerShell-Commands` \
|
}
|
||||||
`git grep powershell` поиск текста в файлах \
|
TestScript = {
|
||||||
`git pull` синхронизировать изменения из хранилища \
|
return Test-Path "$env:ProgramFiles\PowerShell\7\pwsh.exe"
|
||||||
`git status` отобразить статус изменений по файлам \
|
}
|
||||||
`git diff` отобразить изменения построчно \
|
}
|
||||||
`git add .` добавить (проиндексировать) изменения во всех файлах \
|
}
|
||||||
`git commit -m "added file and changed file"` сохранить изменения с комментарием \
|
}
|
||||||
`git push` синхронизировать локальные изменения с репозиторием \
|
```
|
||||||
`git branch dev` создать новую ветку \
|
`$Path = (InstallPowerShellCore).DirectoryName` \
|
||||||
`git switch dev` переключиться на другую ветку \
|
`Test-DscConfiguration -Path $Path` \
|
||||||
`git push --set-upstream origin dev` добавить ветку \
|
`Start-DscConfiguration -Path $path -Wait -Verbose` \
|
||||||
`git branch -d dev` удалить ветку \
|
`Get-Job`
|
||||||
`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