-
Notifications
You must be signed in to change notification settings - Fork 1
/
lesson3.ps1
133 lines (104 loc) · 5.57 KB
/
lesson3.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# 3. Работа с популярными типами данных
#
# 3.1 Работа с числами
#
$a = 35.5
$a.GetType() # тип double
[int]$a # 36 тип int, [int] - акселератор, происходит автоматическое округление
$a -as [int] # 36
$a # 35.5 сама переменная $a остается типа double
$b = 1 # int
$c = 3.2 # double
$d = $b + $c # 4.2
$d.GetType() # double
$b.ToString() # "1" преобразование в string
[math] | Get-Member -Static # список доступных математических методов
[math]::Pow(3,2) # 9 три во второй степени
# + - * /
#
# 3.2 Операторы присваивания
#
$a = 5
$b = 10
$a += $b # 15 $a = $a + $b
$a -= $b # 5 $a = $a - $b
$a *= $b # $a = $a * $b
$a /= $b # $a = $a / $b
$a++ # $a = $a + 1
$a-- # $a = $a - 1
#
# 3.3 Работа со строками
#
$str1 = "Hel"
$str2 = "lo"
$str1 + $str2 # "Hello"
$domain = "google.com"
$url = "https://${domain}/mail" # "https://google.com/mail"
$url = "https://${script:domain}/mail" # "https://google.com/mail"
# Разница между двойной и одинарной кавычкой
$single = '`ttest' # "`ttest" специальные символы игнорируются
$double = "`ttest" # " test" специальные символы обрабатываются
$number = "4" # string
[int]$number # 4 int
$str = "Hello World!"
$str.ToUpper() # "HELLO WORLD!"
$str.ToLower() # "hello world!"
$str.Length # 12 подсчитать количество символов в строке
$str.Contains("ello") # True проверяет есть ли в строке вхождение шаблона
$str.Replace(" ", "-") # "Hello-World!" заменяет все вхождение в строке одного элемента на другой
$str.Substring(3) # "lo World!" убирает первых n символов из строки
$str.Substring(3,2) # "lo" второй параметр указывает на то, сколько символов взять после отрезанных первым параметром
" trim ".Trim() # "trim" уберает пробелы с начала и с конца
#
# 3.3 Работа с массивами
#
[array]$a = 1,2,3,4,5 # структура данных в виде набора элементов, которые расположены в последовательности
$a = @(1, 2, 3, 4, 5) # все элементы имеют свой порядковый номер (индекс) начиная с 0
$a.GetType() # тип массив System.Array
$a[0] # 1 получить элемент массива можно зная его индекс
$a[-1] # 5 первый элемент с конца
$a[0] = 35 # изменить определенный элемент
$a.Length # 5 посчитать количество элементов в массиве
$a -join '' # "12345" соберет массив в строку, в ковычках указывается разделитель
$a -contains 2 # True проверяет есть ли такой элемент в массиве
$a -notcontains 2 # False проверяет отсутствует ли элемент в массиве
foreach ($item in $a) { # при помощи цикла можно выполнить определенное действие с каждым элементом массива
Write-Output $item
}
$a | Where-Object { Write-Output $_ } # тоже самое при помощи конвеера, $_ - текущий элемент массива
# 1
# 2
# 3
# 4
# 5
$a += 6 # добавит новый элемент со значением 6 в конец массива
$a # 123456
$domains = @(
"google.com"
"ukr.net"
)
(Get-Process).ProcessName # вывод только содержимого одной колонки
#
# 3.4 Работа с хэшами
#
[hashtable]$h = @{ "name" = "Oleg" } # хеш содержит пары ключ-значение, в некоторых языках программирования называется словарем (Dictionary)
$h = @{
"name" = "Oleg"
"email" = "[email protected]"
}
$h.name # "Oleg" получить значение по ключу
$h.name = "Test" # изменить значение ключа
"My name is $($h['name'])" # "My name is Oleg" как вставить в строку значение из хэша
#
# 3.5 Работа с датой
#
$date = Get-Date # 24 ноября 2016 г. 21:47:06
$date.GetType() # DateTime тип
$date = Get-Date -f "yyyymmdd" # 20164724 можно использовать различные способы форматирования
$date.GetType() # String после формата превращаяется в строку
$sasTokenExpirity = Get-Date (Get-date).AddYears(10).ToUniversalTime() -Format "yyyy-MM-ddTHH:mm:ssZ" # нужно указать время действия токена
$sasTokenExpirity = Get-Date (Get-date).AddHours(10).ToUniversalTime() -Format "yyyy-MM-ddTHH:mm:ssZ" # нужно указать время действия токена
# Домашнее задание
# https://www.sysadmins.lv/blog-ru/powershell-massivy-chast-1-sozdanie-massivov.aspx
# http://www.vam.in.ua/index.php/it/25-ms-powershell/163-powershell-one-dimensional-arrays.html
# http://windowsnotes.ru/powershell-2/formaty-vremeni-i-daty-v-powershell/