From 7c3ebfcbe53914fccf46f725bbb946de00001c1b Mon Sep 17 00:00:00 2001 From: Alex <116945542+Lifailon@users.noreply.github.com> Date: Thu, 16 Feb 2023 11:08:46 +0300 Subject: [PATCH] Update README.md --- README.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/README.md b/README.md index c48828e..f851868 100644 --- a/README.md +++ b/README.md @@ -80,3 +80,116 @@ `Get-Variable Error` последняя команда с ошибкой \ `Remove-Variable -Name *` очистить все переменные \ `$LASTEXITCODE` содержит код вывода последней запущенной программы, например ping. Если код возврата положительный (True), то $LastExitCode = 0 + +### ENV +`Get-ChildItem Env:` отобразить все переменные окружения \ +`$env:PSModulePath` директории импорта модулей \ +`$env:userprofile` \ +`$env:computername` \ +`$env:username` \ +`$env:userdnsdomain` \ +`$env:logonserver` \ +`([DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).Name` \ +`[Environment]::GetFolderPath('ApplicationData')` + +### GetType +`$srv.GetType()` узнать тип данных \ +`$srv -is [string]` проверка на соответствие типа данных \ +`$srv -isnot [System.Object]` проверка на несоответствие \ +`$char = $srv.ToCharArray()` разбить строку [string] на массив [System.Array] из букв \ +`$char.GetType()` тип данных: Char[] \ +`[Object]` массив (BaseType:System.Array) \ +`[int]` целое число (BaseType:System.ValueType) \ +`[String]` строка-текст (BaseType:System.Object) \ +`[DateTime]` формат времени (BaseType:System.ValueType) + +### Property +`$srv.Count` кол-во элементов в массиве \ +`$srv.Length` содержит количество символом строки переменной [string] или количество значений (строк) объекта \ +`$srv.Chars(2)` отобразить 3-й символ в строке \ +`$srv[2]` отобразить 3-ю строку в массиве + +### Method +`$srv.Insert(0,"https://")` добавить значение перед первым символом \ +`$srv.Substring(4)` удалить (из всего массива) первые 4 символа \ +`$srv.Remove(3)` удалить из всего массива все после 3 символа \ +`$string = "123"` создать строку \ +`$int = [convert]::ToInt32($string)` преобразовать строку в тип данных число \ +`[string]::Concat($text,$num)` объеденить переменные в одну строку \ +`[string]::Join(":",$text,$num)` объеденить используя разделитель \ +`[string]::Compare($text,$num,$true)` выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра) \ +`[string]::Equals($text,$num)` производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении \ +`[string]::IsNullOrEmpty($text)` проверяет наличие строки, если строка пуста $true, если нет $false \ +`[string]::IsNullOrWhiteSpace($text2)` проверяет на наличие только символов пробел, табуляция или символ новой строки + +### Get-Date +`(Get-Date).AddHours(-3)` \ +`$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")` \ +`$Date = Get-Date -f "dd/MM/yyyy"` получаем тип данных [string] \ +`[DateTime]$gDate = Get-Date "$Date"` преобразовать в тип [DateTime] \ +`[int32]$days=($fDate-$gDate).Days` получить разницу в днях \ +`"5/7/07" -as [DateTime]` преобразовать входные данные в тип данных [DateTime] + +### Regex (регулярные выражения) +`-replace "1","2"` замена элементов в индексах массива (везде где присутствует 1, заменить на 2), для удаления используется только первое значение \ +`-split " "` преобразовать строку в массив, разделителем указан пробел, которой удаляется ($url.Split("/")[-1]) \ +`-join " "` преобразовать массив (коллекцию) в единую строку (string), добавить разделителем пробел \ +`$iplist -contains "192.168.1.1"` проверить, что в массиве есть целое значение, выводит True или False \ +`"192.168.1.1" -in $iplist` проверить на наличие указанного значения в массиве \ +`-like *txt*` поиск по маскам wildcard, выводит значение на экран \ +`-match txt` поиска по шаблонам, проверка на соответствие содержимого текста \ +`-match "zabbix|rpc"` условия, для поиска по нескольким словам \ +`-NotMatch` проверка на отсутствие вхождения \ +`$ip = "192.168.10.1"` \ +`$ip -match "(\.\d{1,3})\.\d{1,2}"` True \ +`$Matches` отобразить все подходящие переменные последнего поиска, которые входят и не входят в группы () + +### Группировка +`if ((($1 -eq 1) -and ($2 -eq 2)) -or ($1 -ne 3)) {"$true"} else {"$false"}` два условия: (если $1 = 1 и $2 = 2) или $1 не равно 3. Если хотя бы одно из выражений равно True, то все условие относится к True и наоборот \ +`-and` логическое И \ +`-or` логическое ИЛИ \ +`!(Test-Path $path)` # логическое НЕТ (-not), если путь недоступен, вернет True + +### Специальные символы +`\d` число от 0 до 9 (20-07-2022 эквивалент: "\d\d-\d\d-\d\d\d\d") \ +`\w` буква от "a" до "z" и от "A" до "Z" или число от 0 до 9 \ +`\s` пробел, эквивалент: " " \ +`\n` новая строка \ +`\b` маска, определяет начало и конец целого словосочетания для поиска \ +`.` обозначает любой символ, кроме новой строки \ +`\` экранирует любой специальны символ (метасимвол). Используется, если нужно указать конкретный символ, вместо специального ({ } [ ] / \ + * . $ ^ | ?) \ +`+` повторяется 1 и более раз (\s+) \ +`{1,25}` квантификатор, указывает количество повторений символа слева на право (от 1 до 25 раз) \ +`[]` поиск совпадения любой буквы, например, [A-z0-9] от A до z и цифры от 0 до 9 ("192.168.1.1" -match "192.1[6-7][0-9]") + +### Якори +`^` или `\A` определяет начало строки. $url -replace '^','https:' # добавить в начало; \ +`$` или `\Z` обозначают конец строки. $ip -replace "\d{1,3}$","0" \ +`(?=text)` поиск слова слева. Пишем слева на право от искомого (ищет только целые словосочетания) "Server:\s(.{1,30})\s(?=$username)" \ +`(?<=text)` поиск слова справа. $in_time -replace ".+(?<=Last)" # удалить все до слова Last \ +`(?!text)` не совпадает со словом слева \ +`(?