Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
1) Первоначально так и было 4 строки. Потом выяснилось, что нужен $OldDate, т.к. бывает дата старше а версия младше.
А мне нужны параметры. Хочу быстро видеть, есть ли в системе $OldVers и всё. А память не резиновая, Помнить всё я не могу, и как сортировать, фильтровать, форматировать...
 
2) Вызов без параметров для этого. А параметры, кому надо, уж набрать с дополнением по tab.
 
Эти пункты не конструктивная критика скрипта, а оспаривание нужности его как такого. Но он есть, написан. Чего это оспаривать.
Вот сниппеты бы в консоль научил... вот тогда да. Нахренуа скрипт сразу в пользу 5 строк сниппетов
 

Цитата:
Что Add-Member можно юзать изящнее, ты знаешь сам.  

Не знаю. Или забыл => не знаю

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:58 26-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Рассмотри вот такой вариант без параметерсетов
(это только шаблон, код неполный)
 

Код:
 
New-Module -Name DriversOnline -ScriptBlock {
    $Drivers = Get-WindowsDriver -Online
    $Grouped = $Drivers | Group-Object -Property { ([IO.FileInfo] $_.OriginalFileName).Name }
    $MoreOne = $Grouped | Where-Object -Property Count -GT 1
 
    function GetGroup {
        $Grouped
    }
 
    function GetMultiple {
        $MoreOne
    }
 
    function GetOldVersioned {
        $MoreOne | ForEach-Object -Process { $_.Group | Sort-Object -Property { [Version] $_.Version } | Select-Object -SkipLast 1 }
    }
 
    function GetOldDated {
        $MoreOne | ForEach-Object -Process { $_.Group | Sort-Object -Property { $_.Date } | Select-Object -SkipLast 1 }
    }
 
 
    function Show {
        $Drivers | Add-Member -MemberType ScriptProperty -Name IsOldVersion -Value {$_ -in (GetOldVersion)}
        $Drivers | Add-Member -MemberType ScriptProperty -Name IsOldDate -Value {$_ -in (GetOldDate)}
 
        $Drivers  
            | Sort-Object -Property ClassName, ProviderName, Date  
                | Format-Table -Property Driver, CatalogFile, ClassDescription, ProviderName, Date, Version, BootCritical, IsOldVersion, IsOldDate          
    }
}
 

 
 
Добавлено:
 

Цитата:
Не знаю. Или забыл => не знаю

 
Я не готов этому учить, потому что сам "плаваю": что знал успеваю забыть пока понадобится
 
Но мудрость здесь
https://ilovepowershell.com/2019/11/18/ultimate-guide-to-using-powershell-add-member-cmdlet/
 
 
 
 
Добавлено:

Цитата:
 А память не резиновая, Помнить всё я не могу, и как сортировать, фильтровать, форматировать...

 
 
Get-Member, cортировка и форматирование это не то, что надо "помнить" - а то, что должно быть в подкорке у любого эникея, вооружённного повершелом.
 
Если не уверен в себе - делай в помощь себе-эникею костыли-однострочники.
Но не мешай себе-программисту создавать переиспользуемые штуки
 
Что до меня, то я предпочитаю смотреть вывод через волшебный out-gridview
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 20:33 26-08-2020 | Исправлено: LevT, 21:06 26-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
Рассмотри вот такой вариант без параметерсетов  

Так и подумал, что на каждую строку по функции, только где для группировки ? чистые и в пиплайн
Я думаю это избыточно. Вот если отвязаться от конкретики, сделать обобщенно. Но тут это не выйдет, поди. Не у меня. Кто напишет, велком Придётся делать везде входные параметры, да типизированные...
А скрипт узконаправленный. Узконаправленные функции ради функций, зачем?
 

Цитата:
Но мудрость здесь
https://ilovepowershell.com/2019/11/18/ultimate-guide-to-using-powershell-add-member-cmdlet/

Для этого случая, готовый объект, не pscustom, там ровно тоже и делается, что в скрипте.
 

Цитата:
Get-Member, cортировка и форматирование это не то, что надо "помнить" - а то, что должно быть в подкорке у любого эникея, вооружённного повершелом.  

Ну тут ещё и количество полей, каждый раз, набирать три поля для сортировки, перед этим поглядеть их точно наименование, а затем ещё 9 полей для вывода в таблицу... увольте. Однострочник где то хранить. Нормально решение скрипт для вывода.. Так то вообще можно в одну строку и помнить её

Код:
Get-WindowsDriver -Online | Group-Object -Property { ([IO.FileInfo] $_.OriginalFileName).Name } | Where-Object -Property Count -GT 1 | ForEach-Object -Process { $_.Group | Sort-Object -Property { [Version] $_.Version } | Select-Object -SkipLast 1 }

 
Добавлено:

Цитата:
Рассмотри вот такой вариант без параметерсетов  

Интересно в принципе. Сам подход.
И New-Module -Name DriversOnline -ScriptBlock { } не знал => забыл

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 21:38 26-08-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
А так .\Get-DriversOnline.ps1 -ViewOldVersion | ft НЕ работает, именно из скрипта НЕ работает.
...
Из-за break, заменить на return?

Из-за бряков... но лучше не ретурн, лучше изменить логику скрипта, какая-то она не совсем красивая...  
Только надо подумать, как именно изменить... а сегодня уже нет желания думать.
 
И кстати:

Цитата:
(ParameterSetName = "ViewGroup")

- зачем тебе наборы параметров, если в каждом из них всего по одному уникальному параметру?
Пробовал запускать скрипт совсем без параметров?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:37 26-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
зачем тебе наборы параметров, если в каждом из них всего по одному уникальному параметру?

Это, что бы лучше слышать только один из, использовать.

Цитата:
Пробовал запускать скрипт совсем без параметров?

ессессно. выводит стандартно объекты BasicDriverObject, только с добавленными моими 2 полями: IsOldVersion и IsOldDate. Но их не видно, но они есть
.\Get-DriversOnline.ps1 | ? IsOldVersion | fl *

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 23:00 26-08-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Это, что бы лучше слышать только один из, использовать.

Понятно...
 

Цитата:
выводит стандартно объекты BasicDriverObject

Странно... у меня из-за обострившегося слуха запуск без параметров вываливает:

Цитата:
Не удается разрешить набор параметров с использованием указанных именованных параметров.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 23:10 26-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
Странно... у меня из-за обострившегося слуха запуск без параметров вываливает:  

Ладно не клыки
в старой версии? почтой смотрел?
Там в посте добавлено v0.1 RC1
в частности добавлено [CmdletBinding(DefaultParameterSetName)]
и Пример работы скрипта с указанием разных параметров при вызове. Первый вызов без параметров

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 23:35 26-08-2020 | Исправлено: iNNOKENTIY21, 23:39 26-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

У меня в 7.0.3 кстати тоже, как и у него (тока по-аглиццки)
В 5.1 работает
 
 
iNNOKENTIY21
 

Цитата:
Для этого случая, готовый объект, не pscustom, там ровно тоже и делается, что в скрипте.

 
 
В том-то и дело что
 
 1) Add-Member пофиг какой объект расширять
В повершел все объекты, в т.ч. дотнетовские, wmi и созданные PSпровайдерами заворачиваются в собственную Extensible Type System
 
 2) Кроме NoteProperty есть варианты поинтересней

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 00:19 27-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
У меня в 7.0.3 кстати тоже, как и у него (тока по-аглиццки)  

странно да. у меня пашет:

 

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 00:31 27-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Если со ScriptProperty не выходит - не считай себя дураком, я тут первый дурак.
Раньше у меня выходило их готовить, а сейчас что-то затормозил
 
Ну и прежде всего я с синтаксисом налажал здесь выше: их надо не через $_ делать, а через $this
 
 
Добавлено:
 
Вот это например работает
 

Код:

$amount = @(123.45, 45.678)
$interest = .12
 
$amount | Add-Member -MemberType ScriptProperty -Name Value -Value {$this}
$amount | Add-Member -MemberType NoteProperty -Name Percent -Value ($interest *100)
 
$amount | Add-Member -MemberType ScriptProperty -Name Increase -value {$this * ($this.Percent/100)}
$amount | Add-Member -MemberType ScriptProperty -Name NewValue -value {$this + $this.Increase}
 
 
PS C:\A\Work\pwsh> $amount | select value,percent,increase,newvalue
 
   
 Value Percent Increase NewValue
 ----- ------- -------- --------
123.45      12   14.814  138.264
45.678      12  5.48136 51.15936
 

 
А с $Drivers почему-то нет..

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 02:23 27-08-2020 | Исправлено: LevT, 02:31 27-08-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
в старой версии? почтой смотрел?

Да, первый вариант и тестил...
А что там про почту? не совсем понял...
 

Цитата:
Там в посте добавлено v0.1 RC1

А, так это уже совсем другое дело...  
Да, этот вариант уже работает... и работает верно, с ретурном имею в виду.
 
Но лично я, всё же, пошел бы по пути функций (касательно первых четырех параметров), если бы такой скрипт понадобилось бы написать...  
Не берусь утверждать что лучше, что хуже... оба варианта вполне рабочие...
Примерно так:
script.ps1

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:26 27-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
А что там про почту? не совсем понял...  

Подписка на тему, приходит на мыло. Я иногда пропускаю добавки, таким образом
 

Цитата:
Примерно так:

Упростил логику... switch ([convert]::toint32(($bin = -join [int[]]$arr),2)){
 

Код:
function a {
    [CmdletBinding(DefaultParameterSetName)]
    param (
        [Parameter(ParameterSetName = "ViewGroup"     ) ] [switch] $ViewGroup,      # сгруппированные по имени файла
        [Parameter(ParameterSetName = "ViewMoreOne"   ) ] [switch] $ViewMoreOne,    # для которых есть более одной версии
        [Parameter(ParameterSetName = "ViewOldVersion") ] [switch] $ViewOldVersion, # устаревшие версии
        [Parameter(ParameterSetName = "ViewOldDate"   ) ] [switch] $ViewOldDate,    # устаревшей датой
        [Parameter(ParameterSetName = "Table"         ) ] [switch] $Table           # все, в виде таблицы, с полями IsOldVersion и IsOldDate
    )
 
    switch ($PSBoundParameters.Keys) {
        ViewGroup      { Write-Host "Parameter is : ViewGroup"      }
        ViewMoreOne    { Write-Host "Parameter is : ViewMoreOne"    }
        ViewOldVersion { Write-Host "Parameter is : ViewOldVersion" }
        ViewOldDate    { Write-Host "Parameter is : ViewOldDate"    }
        Table          { Write-Host "Parameter is : Table"          }
        Default        { Write-Host "Parameter is : Not parameters" }
    }
}
 
a -ViewOldDate

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 18:27 27-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Золотое правило - различать, что именно пишешь,
 из строго двух вариантов:
 
 1) повторно используемый командлет
 для использования в трудопроводах "трубопроводчиком", пускай только и умеющим смотреть что получил, сортировать полученное и форматировать отсортированное.
 
 2) контроллер - сценарий, который можно дать "эникею" для того, чтобы ему меньше учить и запоминать.
 
   Здесь как более трудоёмкий вариант можно всё автоматизировать (вплоть до создания менюшек),
     компенсируя его неумение пользоваться Get-Member, Sort- и Format-  
       (некоторые и об автодополнении не слышали, потому что для них всё "консоль" что синее что чёрное окошко)
 
Это для особо рассеянного эникея - потому что то умение первое, что от него требуется с повершелом. После умения различать синее окошко (с автодополнением) от черного cmd (без всех этих буржуазных наворотов).
 
 
Требования к коду этих двух вариантов противоположные.
Ты сначала сам определись, какого рода код пишешь, первого или второго.
 
 
Добавлено:
 
Format-
допустим только в контроллере, созданном для тотального неумехи (ну или для себя, впавшего в это состояние)

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 19:10 27-08-2020 | Исправлено: LevT, 19:25 27-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ты о чём ваще ?
 
Что за разделение, где, как, по какому принципу. О каких сценариях речь.
В общем, разделения такого не существует.
Если о моем V1RC1, то он и как 2 - поглядеть таблицу, устаревшие... и как 1 - его легко использовать  в трубе, например в связке с pnputil и т.д.

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 19:30 27-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Частный, но важнейший случай:  
потенциальная возможность выдать из функции что-то, тип чего нельзя описать конкретным [OutputType] - и необходимость читать код для того, чтобы понять тип выдачи
 
- это возможность стрелять себе в ноги
 
 
 
Добавлено:

Цитата:
В общем, разделения такого не существует.

 
Твоё суверенное право.
Не имею возможности тебе помешать
 
 
 
Добавлено:
 
Повершел выпущен с внутриутробной травмой:
  каждая функция/командлет (в мягком варианте - каждый параметерсет)
     должны были выдавать конкретный и безальтернативный [OutputType]
 
Поуродовали..
 ради удобства тех "умельцев" консоли, кто не различает чёрное и синее окошки.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 19:34 27-08-2020 | Исправлено: LevT, 20:09 27-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
потенциальная возможность выдать из функции что-то, тип чего нельзя описать конкретным [OutputType]

Это в принципе (без побочки) согласен, но не догма. Особливо для такого маленького, простенького, узконаправленного скрипта.
Убери параметры, блоки if, только вывод $Drivers, будет [OutputType], только еще бы на вход принимать вывод Get-WindowsDriver, а не внутри его использовать.
Заметь, без параметров, так себя и ведёт
.\Get-DriversOnline.ps1 | ? IsOldVersion | % {"pnputil /delete-driver " + $_.Driver + " /uninstall /force"}
добавив параметры:
.\Get-DriversOnline.ps1 -ViewOldVersion | % {"pnputil /delete-driver " + $_.Driver + " /uninstall /force"}
Скучно да. Такой скриптик столько обсуждается
А всего лишь был затык с бряком, спросил на форуме и почти сразу сам допёр.
Не  в первый раз. Читаешь в редакторе, затык, спроси, прочитай своё же на форуме, просветление..

 
Добавлено:
LevT

Цитата:
Повершел выпущен с внутриутробной травмой:
  каждая функция/командлет (в мягком варианте - каждый параметерсет)
     должны были выдавать конкретный и безальтернативный [OutputType]  

Потому что ты путаешь, shell с functional programming. Оно может включать в себя элементы, но всё же это shell, хоть и продвинутый, к тому же ООП-шный, на .net

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 20:11 27-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Скриптик твой отличный пример, чтобы начать осваивать динамические модули.
Модули - способ объединения разномастных функций, которым нужно что-то общее в контексте
 
У меня затык со ScriptProperty, почему-то не могу присобачить её к  
Microsoft.Dism.Commands.BasicDriverObject
 
Может это из-за уникальности (точнее недоделанности) модуля Dism
 
Если это действительно так, и сам Dism сделан не феншую - стало быть, надо смело собирать кастомный PSObject, феншуйный по определению
 
 
 
Добавлено:
 

Цитата:
Потому что ты путаешь, shell с functional programming. Оно может включать в себя элементы, но всё же это shell, хоть и продвинутый, к тому же ООП-шный, на .net

 
Ознакомься: Monad Manifesto Сновера (2002 год), annotated недавно Дональдом Джонсом (Don Jones)
 
По замыслу, Monad Shell (MSH) должен был быть только одним из компонентов.
 
 
Ознакомься ещё: Functional Core - Imperative Shell
Индустриальное программирование только в последние годы стало до этой идеи дотягиваться

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 20:17 27-08-2020 | Исправлено: LevT, 20:29 27-08-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
У меня затык со ScriptProperty, почему-то не могу присобачить её к  
Microsoft.Dism.Commands.BasicDriverObject

А в чём затык?
Пашет же:

Код:
$Drivers = Get-WindowsDriver -Online
 
$Drivers | Add-Member -MemberType ScriptProperty -Name DaysAgo -Value {((Get-Date) - ($this.Date)).Days}
$Drivers | Add-Member -MemberType ScriptProperty -Name Ver -Value {[Version]$this.Version}
$Drivers | Add-Member -MemberType ScriptProperty -Name Desc -Value {$this.ClassDescription}
$Drivers | Add-Member -MemberType ScriptProperty -Name Prov -Value {$this.ProviderName}
 
$Drivers | sort DaysAgo | select DaysAgo, Ver, Desc, Prov

 
Добавлено:
Кстати..

Код:
ls $env:tmp | Add-Member -MemberType ScriptProperty -Name LastWriteDaysAgo -Value {((Get-Date) - ($this.LastWriteTime)).Days} -PassThru | select Name, LastWriteDaysAgo | ? LastWriteDaysAgo -gt 2

нормальный такой способ, добавить в объект вычисляемое свойство

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 20:57 27-08-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Подписка на тему, приходит на мыло.

А, понял. Нет, я подписками не пользуюсь...
 

Цитата:
Упростил логику...

Да, так попроще будет.
Просто, почему-то чаще лезет бинарная логика в голову (по работе приходилось с ней много "сотрудничать" ) в подобных случаях... потому так и написал, что первое в голову пришло.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:08 27-08-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Я хотел такое, чтобы было эквивалентно твоему
 
$Drivers | Add-Member -MemberType ScriptProperty -Name 'IsOldDate' -Value {$this -in @($OldDate)}

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 22:37 27-08-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru