Авторизация



Теги сайта



0х0000007b 1c access control list acl activation active directory ad roles add route adexplorer apache authentication to zabbix bare metal recovery bg zsh bicycle books bruteforce ccna centos centos packet certificate change net adapter name chap chkrootkit chmod cinnamon cisco class clipboard cmd configuring cpu cores cron crontab csc custom object cut cvsup cvsup-without-gui db dekorator dev null 2 1 dhcp dhcp reservation disable ipv6 diskpart dism django dns domain naming master domain roles download download powershell enable routing on windows enabled encapsulation english english language esx eventlog fail2ban fastest_cvsup fedora fg zsh field formatdatabase freebsd fsmo get-aduser hardware https hyper-v idioms iis inheritance iperf iptables iscsi jobs kernel panic ldap ldap аутентификация zabbix limit lingualeo linux mcitp mcsa memory check method microsoft mod_ssl mount mssql mysql mysql user password netcache network network config network load balance cluster network scripts nginx nlb num lock numlock oop openssl pap partition pdc permissions pfx php pipeline pkg_version polymorphism ports upgrade portupgrade posix powershell ppp puppet pwdlastset python rdp regedit registry remote enable restrictions reverse proxy rhel rid rope jumping bridge мост прыжок высота route add route freebsd routing protocol rpm sc sc sdset sc sdshow schema scope script output secure web security service permissions services session set dns servers set ip address sftp shell script show variables snmp sound scheme sounds speed ssh ssl standard-supfile subinacl supfile switch switchport sync syncronization task sсheduler tempdb tripplite monitoring tweaks unix user must change password at next logon utf8 vim vlan vmware w32tm web windows windows 2003 r2 windows 2008 r2 windows firewall windows server windows server 2012 windows server backup windows service permissions windows пингалка winre wsus xargs xrdp yum zabbix zabbix external check zabbix ldap authentication zsh автоматическое обновление портов freebsd автономные файлы активация английский язык база данных безопасность active directory буфер вело велосипед видео включение роутинга в windows внешняя проверка zabbix вредоносное программное обеспечение posix задание двумерного массива звуки звуковая схема идиомы иероглифы киев кодировка командная строка конфигурация сети маршрутизация маршруты в freebsd маршруты в redhat linux область обновление портов ограничения windows основные команды пакеты centos перевод перенос планировщик задач покатушки полет над днепром проблемы кодировки протокол путь развития в it разрешения служб windows регистрируем cmd скриптом недоступность хоста реестр резервирование ip скриптом роли домена русские символы синхронизация скачать скачать powershell скачать книгу скорость сети списки контроля доступа тарзанка твики фоновые процессы цикл mssql

Главная страница Microsoft POWERSHELL
Скрипт PowerShell в помощь для изучения английских слов Печать

Возникло у меня желание облегчить себе задачу в изучении английского языка. В итоге, после некоторых раздумий, я написал PowerShell скрипт, призванный помочь в выучивании английских слов. Также скрипт прекрасно подходит для задач тестирования (и не только английского, т.к. база в текстовом формате и может содержать все что угодно)

Скачать архив со скриптом и начальной базой английских слов (ССЫЛКА (24.79 Кб) [скачано:1222 раз(а)])

Как пользоваться:

  1. Качаем архив по ссылке выше
  2. Распаковываем архив в удобное место на диске
  3. Запускаем из распаковавшейся папки ярлык English_Start-Test.lnk

* при первом запуске могут понадобиться повышенные административные права. Это связано с тем, что по-умолчанию PowerShell запрещает запускать любые скрипты из любого места и эту настройку нужно поменять (в Windows 7 и Windows 8 жмем правой кнопкой на ярлык English_Start-Test.lnk, в выпавшем списке выбираем пункт "Запуск от имени администратора")

Системные требования:

  • Windows 7 или Windows 8 или Windows XP (для XP должен быть установлен dotNET Framework 3.5 и Windows PowerShell 2.0)
  • PowerShell 2.0 и выше (по-умолчанию установлен на системах Windows 7 и Windows 8)

Другими словами

Если у Вас установлена операционная система Windows 7 или Windows 8 - то ничего дополнительно делать не нужно, кроме как три пункта из раздела "Как пользоваться" выше.

Если же у Вас установлена Windows XP и она автоматически не обновляется, то может потребоваться установка Windows PowerShell 2.0.

Код программы:

try {
    $private:a = $host.UI.RawUI
    $private:a.WindowTitle = "Тестирование знаний"
    $b = $a.BufferSize
    $b.Width = 120
    $b.Height = 25
    $a.BufferSize = $b
    $b = $a.WindowSize
    $b.Width = 120
    $b.Height = 25
    $a.WindowSize = $b
} finally {
    Remove-Variable a,b -ErrorAction SilentlyContinue
}

Clear-Host

$error.Clear | Out-Null
Write-Host  
Write-Host 'Original and comments: http://vam.in.ua/index.php/it/25-ms-powershell/165-powershell-learning-english.html' -ForegroundColor DarkCyan
Write-Host 'Feedback: http://vam.in.ua/index.php/contacts/2-admins/1-aleksey.html' -ForegroundColor DarkCyan
Write-Host  
Write-Host  

Function Private:Remove-Spaces ([string]$String) {
    while ($String.Substring(0,1) -eq ' ') {
        $String = $String.Substring(1,$String.Length - 1)
    }
    while ($String.Substring(($String.Length - 1),1) -eq ' ') {
        $String = $String.Substring(0, $String.Length - 1)
    }
    Return $String
}

Function Private:Get-Rank ([int32]$Percent) {
    [string]$Private:rank = 'Звание не определено!'
    if ($Percent -le 20) {$rank = 'Ни бе, ни ме, ни кукареку'}
    if (($Percent -gt 20) -and ($Percent -le 50)) {$rank = 'Простак'}
    if (($Percent -gt 50) -and ($Percent -le 80)) {$rank = 'Просветленный'}
    if (($Percent -gt 80) -and ($Percent -lt 95)) {$rank = 'Знаток'}
    if (($Percent -ge 95) -and ($Percent -le 99)) {$rank = 'Гуру'}
    if ($Percent -ge 100) {$rank = 'Гений'}
    Return $rank
}

[void]::($words = Get-Content .\base.txt -ErrorAction Stop)

$script:array = New-Object 'object[,]' $words.Count,2

$script:totalWords = 0
foreach ($word in $words) {
    if ($word.Length -gt 0) {
        try {
            [string]$private:eng = [regex]::Match($word,'.*(?=\t)')
            if ($eng.Length -gt 0) {
                $eng = Remove-Spaces -String $eng
                $array[$totalWords,1] = [regex]::Match($word,'(?<=\t).*')
                $array[$totalWords,0] = $eng
                $totalWords += 1
            }
            $eng = ''
        } finally {}
    }
}

[System.Collections.ArrayList]$numbArray = @(1..$totalWords)

$private:right = 0
$private:secondTry = 0
$private:mistakes = 0
$private:currentQ = 0

while ($numbArray.Count -gt 0) {
    
    $private:rndm = Get-Random -Minimum 0 -Maximum ($numbArray.Count)

    $private:item = $numbArray[$rndm]

    $numbArray.RemoveAt($rndm)

    $private:answer = Read-Host $array[($item - 1),1]

    if ($answer -ieq $array[($item - 1),0]) {
        $right += 1
        Write-Host 'Верно!' -ForegroundColor Green
    } else {
        Write-Host 'Не верно!' -ForegroundColor Yellow
        Write-Host  
        Write-Host 'Попробуем с подсказками:' -ForegroundColor DarkGray

        $private:variantsNum = 1
        [string]$private:variants = ''
        $private:rndm3 = Get-Random -Minimum 1 -Maximum 8
        while ($variantsNum -lt 8) {

            if ($rndm3 -eq $variantsNum) {
                $variants += ('[' + ($array[($item - 1),0]) + ']     ')
            } else {
                $private:rndm2 = Get-Random -Minimum 0 -Maximum ($totalWords)
                if (($array[$rndm2,0]) -eq ($array[($item - 1),0])) {
                    $variantsNum -= 1
                } else {
                    $variants += ('[' + ($array[$rndm2,0]) + "]     ")
                }
            }

            $variantsNum += 1
        }

        Write-Host $variants -ForegroundColor White
        Write-Host  
        
        $answer = Read-Host $array[($item - 1),1]

        if ($answer -ieq $array[($item - 1),0]) {
            $secondTry += 1
            Write-Host 'Таки да' -ForegroundColor Green
        } else {
            $mistakes += 1
            Write-Host 'Неа, не верно!' -ForegroundColor Red

            Write-Host  
            Write-Host  
            Write-Host "Правильный ответ:" -ForegroundColor DarkGray
            Write-Host $array[($item - 1),1] ": `t" $array[($item - 1),0] -ForegroundColor White
        }

    }

    $currentQ += 1

    Write-Host  
    [int32]$Private:percent = (($right + $secondTry + $mistakes) * 100 / $totalWords)
    Write-Host  '-------=============------- [' $currentQ '/' $totalWords ']  ' $percent '%' -ForegroundColor DarkGray
    Write-Host  
    Write-Host  

}

Write-Host  
Write-Host  
Write-Host "Всего вопросов: `t" $totalWords -ForegroundColor DarkCyan
Write-Host  
Write-Host "Верных ответов: `t" $right -ForegroundColor DarkCyan
Write-Host "Со второй попытки: `t" $secondTry -ForegroundColor DarkCyan
Write-Host "Ошибок: `t`t" $mistakes -ForegroundColor DarkCyan
$percent = ($right * 100 / $totalWords)
Write-Host  
Write-Host  
Write-Host "Точное знание: `t`t" $percent "%" -ForegroundColor Cyan
Write-Host  
$percent = $percent + (($secondTry * 100 / $totalWords) / 2)
$Private:finalRank = Get-Rank -Percent $percent
Write-Host "Ваш титул: `t`t" $finalRank -ForegroundColor Magenta
Write-Host  

Remove-Variable words,answer,array,numbArray,rndm,rndm2,rndm3,variants,variantsNum,percent,totalWords,finalRank,currentQ -ErrorAction SilentlyContinue

Write-Host  
Write-Host  
Write-Host "Для выхода нажмите ""Ctrl + C"" или закройте окно" -ForegroundColor DarkCyan
Start-Sleep -Seconds 65535

База скрипта

База должна храниться в текстовом файле base.txt в том же каталоге, что и сам скрипт.

Формат базы:

ответ{знак табуляции}вопрос

...

handрука, вручать

...

adjective	прилагательное, зависимый
bay	залив, отсек, лаять, облаять
beyond	вне, по ту сторону, после, сверх
bunch	связка, группа, пучок, связывать
care	заботиться, хотеть, уход
carpenter	плотник, изготовлять
chest	грудь, сундук, фонд
chill	холод, охлаждать
climb	лазить, взбираться, подъем
dew	роса
few	немногие, небольшое количество
hang	вешать, висеть
hug	обнимать
huge	огромный
knee	колено
lick	облизывать
mercury	ртуть, Меркурий
opinion	мнение
origin	происхождение, начало
shape	форма, лепить, сформировать
shirt	рубашка, футболка
shy	застенчивый, пугливый, стеснительный
sly	хитрый
suitcase	чемодан
towel	полотенце

Как дополнять базу:

Самый простой способ - использовать Microsoft Excel. Вносим на листе эксэля в один столбец необходимые ответы, а в соседний справа - соответствующие вопросы. Потом выделяем оба столбца, нажимаем "Копировать" и вставляем это в текстовую базу скрипта (base.txt).

 

Перенос базы с сайта LinguaLeo.com:

http://vam.in.ua/index.php/it/34-english-language/248-english-lingualeo-fetch-words.html

 
Многомерные массивы в PowerShell Печать
$mdArray = New-Object 'object[,]' 5,3 # Создаем двумерный массив
$mdArray[0,0] = 1 # Заносим в первую строку первого столбика числовое значение 1
$mdArray[1,0] = 2 # Заносим во вторую строку первого столбика числовое значение 2
$mdArray[2,0] = 3
$mdArray[3,0] = 4
$mdArray[4,0] = 5

$mdArray[0,1] = 'Sylvester ' # Заносим в первую строку второго столбика текстовое значение "Sylvester"
$mdArray[1,1] = 'Jimm'
$mdArray[2,1] = 'Keanu'
$mdArray[3,1] = 'Sean'
$mdArray[4,1] = 'Cary-Hiroyuki'

$mdArray[0,2] = 'Stallone' # Заносим в первую строку третьего столбика текстовое значение "Stallone"
$mdArray[1,2] = 'Carrey'
$mdArray[2,2] = 'Reeves'
$mdArray[3,2] = 'Bean'
$mdArray[4,2] = 'Tagawa'

Clear-Host

Write-Host $mdArray[0,0] `t $mdArray[0,1] `t $mdArray[0,2]
Write-Host $mdArray[1,0] `t $mdArray[1,1] `t`t`t $mdArray[1,2]
Write-Host $mdArray[2,0] `t $mdArray[2,1] `t`t`t $mdArray[2,2]
Write-Host $mdArray[3,0] `t $mdArray[3,1] `t`t`t $mdArray[3,2]
Write-Host $mdArray[4,0] `t $mdArray[4,1] `t $mdArray[4,2]

Результат работы скрипта:

1 	 Sylvester  	 Stallone
2 	 Jimm 			 Carrey
3 	 Keanu 			 Reeves
4 	 Sean 			 Bean
5 	 Cary-Hiroyuki 	 Tagawa
 
Одномерные массивы в PowerShell Печать

Индексы значений массивов начинаются с нуля

PS C:\> $arr1 = 1,2,3,4,5,6,7,8,9,10 # Объявляем числовой массив
PS C:\> $arr2 = "A", "B", "C", "D", "E", "F", "G" # Объявляем текстовый массив
PS C:\>
PS C:\> Write-Host $arr1 # Таким образом мы увидим значения массива в строчку
1 2 3 4 5 6 7 8 9 10
PS C:\> Write-Host $arr2
A B C D E F G
PS C:\> $arr1 # Таким образом мы увидим значения массива в столбик
1
2
3
4
5
6
7
8
9
10
PS C:\> $arr2
A
B
C
D
E
F
G
PS C:\>
PS C:\> $arr1[0] # Выберем из массива первый элемент
1
PS C:\> $arr1[1] # Выберем из массива второй элемент
2
PS C:\> $arr1[9] # Выберем из массива последний элемент
10
PS C:\> '{9}' -f $arr1 # Другой способ выбора элементов массива
10
PS C:\> $arr1[-1] # С помощью знака "минус" можно выбирать элементы начиная с конца массива
10
PS C:\> $arr1[-3]
8
PS C:\> $arr1[0,4,9] # Выбираем сразу несколько элементов из массива
1
5
10
PS C:\> $arr2[0..3] # Выбираем диапазон значений начиная с первого и заканчивая четвертым
A
B
C
D
PS C:\> $arr1[3..-2] # Выборка диапазона в обратном порядке, начиная с четвертого, затем третьего и заканчивая предпоследним
4
3
2
1
10
9
PS C:\> $arr1[0..2+7..9] # Выберем несколько диапазонов сразу с помощью знака "плюс"
1
2
3
8
9
10

Cast-объявление массивов

PS C:\> $arr3 = @(1,2,3,4,5,6,7,8,9,10) # Символ "собачка" перед скобками является явным указанием массива
PS C:\>
PS C:\> $arr4 = @(Get-Process -Name "powershell_ise" ; Get-Date -Format dd:mm:yyy ; Get-Service | Select-Object -First 1 | Format-Table -AutoSize -Wrap) # Значения массива можно разделять и символом "точка с запятой", если эти значения являются командлетами, то их не нужно заключать в кавычки
PS C:\>
PS C:\> $arr4 # При вызове массива, значениями которого являются командлеты, последние будут выполнены

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    736      76   363420     223660  1015 1 162,69   4536 powershell_ise


17:58:2013


Status  Name            DisplayName
------  ----            -----------
Running AdobeARMservice Adobe Acrobat Update Service

Управление элементами массивов

PS C:\> $arr5 = @("One"; "Two"; "Three"; "Four"; "Five") # Объявим текстовый массив
PS C:\>
PS C:\> $arr1 # Посмотрим на значения ранее созданного числового массива
1
2
3
4
5
6
7
8
9
10
 # МОДИФИКАЦИЯ
PS C:\> $arr1[8] # Выведем на экран значение массива с индексом 8
9
PS C:\> $arr1[8] = 34 # Заменим значение с индексом 8 на новое
PS C:\> $arr1 # Как видно, предпоследний элемент массива поменялся
1
2
3
4
5
6
7
8
34
10
 # ДОБАВЛЕНИЕ В КОНЕЦ МАССИВА
PS C:\>
PS C:\> $arr5
One
Two
Three
Four
Five
PS C:\> $arr5 += "Six" # Добавим в конец одномерного массива еще одно значение
PS C:\> $arr5
One
Two
Three
Four
Five
Six
 # ДОБАВЛЕНИЕ В СЕРЕДИНУ МАССИВА
PS C:\> 
PS C:\> $arr1
1
2
3
4
5
6
7
8
34
10
PS C:\> $arr1 = $arr1[0..7] + 9 + $arr1[8..10] # Добавление значения в массив arr1 на место между индексами 7 и 8
PS C:\> $arr1
1
2
3
4
5
6
7
8
9
34
10
 # УДАЛЕНИЕ ЗНАЧЕНИЯ ИЗ МАССИВА
PS C:\>
PS C:\> $arr1
1
2
3
4
5
6
7
8
9
34
10
PS C:\>
PS C:\> $arr1 = $arr1[0..3] + $arr1[5..10] # Удаление элемента с индексом 4 из массива arr1
PS C:\> $arr1
1
2
3
4
6
7
8
9
34
10
 
<< Первая < Предыдущая 1 2 3 4 5 6 7 8 9 10 Следующая > Последняя >>

Страница 8 из 20
Главная страница Microsoft POWERSHELL