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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 226

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

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.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Цитата:
Кто знает, как победить в VSCode терминал повершел?

Чисто терминал или PowerShell Integrated Console? В последнем psreadline не работает. Только в предварительной версии аддона, но она глючная, отваливается часто.
А в просто терминале, всё норм. Но им не пользуюсь. ибо дебаг в интегрированной. Я в редакторе код набираю и жму F5 для дебага, Ctrl+F5 без дебага, F8 только выделенный код на запуск.
А чисто терминал, отдельно, новомодный Windows Terminal.
Я psreadline обновлял в ручную для системы (C:\Program Files\WindowsPowerShell\Modules\PSReadline), в powershell core 7 свой psreadline, оттуда и копировал
Ничего вроде особо не настраивал.
весь файл настроек с аддонами

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 14:47 21-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
А стрелка вверх это разве PSReadline?
По-моему, она отродясь работала и в PS консоли, и в ISE (задолго до появления и PSReadline, и VSCode)

Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 16:33 21-01-2020
iNNOKENTIY21



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

Цитата:
А стрелка вверх это разве PSReadline?

В рамках сеанса, нет. Между сеансами, PSReadline.
У себя не наблюдаю проблем с историей в сеансе.

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 16:44 21-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Может, у тебя и "Toggle line comment" по Ctrl-/ работает?

Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 19:43 21-01-2020
iNNOKENTIY21



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

Цитата:
Может, у тебя и "Toggle line comment" по Ctrl-/ работает?  

Работает
 


 
Классы, классы… Скрипты!
 
Get-DiskImageVolume2.ps1

Код:
param($DiskImageFile = "U:\Test.VHDx")
$DiskImage   = Get-DiskImage -ImagePath $DiskImageFile
$StorageType = [int] $DiskImage.StorageType
$ISOGet      = { $DiskImage | Get-Volume }
$ISOMount    = { Mount-DiskImage -ImagePath $DiskImageFile | Get-Volume }
$VHDGet      = { $DiskImage | Get-Disk | Get-Partition | Get-Volume }
$VHDMount    = { Mount-DiskImage -ImagePath $DiskImageFile | Get-Disk | Get-Partition | Get-Volume }
$Get         = @{ 1 = $ISOGet; 2 = $VHDGet; 3 = $VHDGet }
$Mount       = @{ 1 = $ISOMount; 2 = $VHDMount; 3 = $VHDMount }
if (-not ($DiskImage.Attached)) { & $Mount.$StorageType } else { & $Get.$StorageType }

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 22:28 21-01-2020
LevT



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

Цитата:
Классы, классы… Скрипты!

 
Не любые скрипты, а "идиоматические" (родные для повершел)
С замыканиями-скриптблоками
 
 
Добавлено:
 
Get-DiskImageVolume2.Tests.ps1
 

Код:

#Requires -Version 5.1
#Requires -Modules Hyper-V
#Requires -Modules Pester
# Pester достаточно старой версии из комплекта винды
# Hyper-V  появляется после & {Enable-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-Management-PowerShell -Online}
 
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
# $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
# . "$here\$sut"
 
 
Describe "Работа скрипта Get-DiskImageVolume2" {
    It "скрипт не должен выдавать null" {
 
        $FileName = 'test.vhdx'
 
        # создаём тестовый файл образа в папке скрипта
        $DiskImageFile = Join-Path $here $FileName
        if (-not ($DiskImageFile | Test-Path)) {
            $DiskImageFile | New-VHD -SizeBytes 33GB -Dynamic   #
        }
        $result = & (Join-Path $here Get-DiskImageVolume2.ps1) -DiskImageFile $DiskImageFile
 
        $result | Should Not BeNullOrEmpty
    }
}
 

 
 
Добавлено:
iNNOKENTIY21
 
Можно в таком виде описать ожидания от работы скрипта и их проверить

Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 23:11 21-01-2020 | Исправлено: LevT, 00:51 22-01-2020
LevT



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

Цитата:
У себя не наблюдаю проблем с историей в сеансе.

 
Выяснил, что у меня тоже работает в сеансе, по крайней мере так бывает.
А нужно, чтобы работало в режиме дебага - так у меня не бывает, к сожалению.
 

Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 08:13 22-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Может там, сведущий кто есть -> Visual Studio Code | VS Code | VSCode - [4] :: Программы :: Компьютерный форум Ru.Board

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 09:41 22-01-2020
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Скажите, пожалуйста, как сделать один bat-файл, который при запуске будет:  
 
1) включать адаптер, если он выключен
2) выключать адаптер, если он включен
 
Команды выглядят таким образом:
 
netsh interface set interface name="Ethernet" enable - включить адаптер
netsh interface set interface name="Ethernet" disable - выключить адаптер

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 10:32 22-01-2020
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
icijafi, можешь сваять батник на основе проверки наличия инета через пинг известного сайта:

Код:
ping ya.ru |>nul find /i "TTL=" && echo инет есть

Всего записей: 3097 | Зарегистр. 24-10-2002 | Отправлено: 12:42 22-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Боюсь, что приколы экстеншена а не самой, VCSode

Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 12:42 22-01-2020
YuS_2



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

Цитата:
как сделать один bat-файл, который при запуске будет:
1) включать адаптер, если он выключен  
2) выключать адаптер, если он включен  

так:

Код:
@echo off
set deviceid=9
for /f "delims=" %%a in ('
    wmic path win32_networkadapter where deviceid^=%deviceid% get netenabled /value^|find /i "netenabled"
') do set %%a
if "%NetEnabled%"=="FALSE" (wmic path win32_networkadapter where deviceid=%deviceid% call enable) else (
    wmic path win32_networkadapter where deviceid=%deviceid% call disable
)
pause&exit

 
посмотреть deviceid необходимого адаптера:

Код:
wmic path win32_networkadapter where physicaladapter=true get netenabled,deviceid,name /value

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:44 22-01-2020
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN, YuS_2 благодарю за ответ. Ещё возник такой вопрос. Каким образом можно отключить всплывающее окно «Контроль учётных записей» только для данного батника?

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 07:50 23-01-2020 | Исправлено: icijafi, 07:51 23-01-2020
iNNOKENTIY21



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

Цитата:
Здравствуйте. Скажите, пожалуйста, как сделать один bat-файл, который при запуске будет:  
 
1) включать адаптер, если он выключен
2) выключать адаптер, если он включен
 
Команды выглядят таким образом:
 
netsh interface set interface name="Ethernet" enable - включить адаптер
netsh interface set interface name="Ethernet" disable - выключить адаптер

У меня, такое на netsh получилось, зависит от языка
 
EthernetToggle.cmd
Код:
set adapterName="Ethernet"
set statusString="Подключен"

for /f "delims=" %%a in ('
   netsh int show int ^| find %adapterName% ^| find /c %statusString%
') do set status=%%a

if %status%==0 (netsh interface set interface name=%adapterName% enable)
if %status%==1 (netsh interface set interface name=%adapterName% disable)


Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 11:29 23-01-2020
mig73



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
icijafi
Не совсем то, интерфейс надо выбрать из доступных цифрой для ВКЛ/ВЫКЛ.
Подробнее...

Всего записей: 8283 | Зарегистр. 24-02-2010 | Отправлено: 12:43 23-01-2020 | Исправлено: mig73, 13:28 23-01-2020
icijafi

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

Код:
@echo off
set deviceid=9
for /f "delims=" %%a in ('
    wmic path win32_networkadapter where deviceid^=%deviceid% get netenabled /value^|find /i "netenabled"
') do set %%a
if "%NetEnabled%"=="FALSE" (wmic path win32_networkadapter where deviceid=%deviceid% call enable) else (
    wmic path win32_networkadapter where deviceid=%deviceid% call disable
)
pause&exit

Этот код работает идеально, просто мне необходимо, чтобы данный батник при двойном клике на нём запускался от имени администратора и без окна «Контроль учётных записей».

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 12:58 23-01-2020 | Исправлено: icijafi, 12:59 23-01-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
icijafi
https://gist.github.com/Maximus5/a7fb0a11b3c33e5d96b0
 

Код:
 
@echo off@echo off
 
"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" >nul 2>&1
 
:: If error flag set, we do not have admin
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else (goto gotAdmin )
 
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
 
:gotAdmin
if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs")
pushd "%CD%"
CD /D "%~dp0"
 
set deviceid=9
for /f "delims=" %%a in (
    'wmic path win32_networkadapter where deviceid^=%deviceid% get netenabled /value^ | find /i "netenabled"'
) do set %%a
if "%NetEnabled%"=="FALSE" (wmic path win32_networkadapter where deviceid=%deviceid% call enable) else (
    wmic path win32_networkadapter where deviceid=%deviceid% call disable
)
pause&exit
 

Всего записей: 2478 | Зарегистр. 27-07-2009 | Отправлено: 13:32 23-01-2020 | Исправлено: farag, 13:40 23-01-2020
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag, mig73, iNNOKENTIY21, YuS_2 благодарю за помощь. Вы мне очень помогли.

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 13:47 23-01-2020 | Исправлено: icijafi, 13:49 23-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снипет для тех, у кого несколько повершелов и несколько IDE -  
   и бывает непонятно, в каком окружении по факту запустился скрипт.
 
Полезен при отладке
 

Код:

"{0}, version {1}" -f $Host.Name, $Host.Version.ToString() | Write-Host -ForegroundColor Blue
"PSVersion: {0}" -f $PSVersionTable['PSVersion'].ToString() | Write-Host -ForegroundColor Blue
 

Visual Studio Code Host, version 2020.1.0
PSVersion: 6.2.3



Всего записей: 17215 | Зарегистр. 14-10-2001 | Отправлено: 13:50 23-01-2020 | Исправлено: LevT, 15:13 23-01-2020
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, привет!
У меня вопрос.
Есть задача резервного копирования.
Предположим, что оно автоматическое, но есть необходимость его сделать вручную, путем запуска скрипта, который это резервное копирование выполняет.
У меня есть цикл, который смотрит, если файл с указанным имененм и переименовывает его, но это однократно, а как сделать, чтобы какждый раз при наличии имени файла оно заменялось?
 
Код для разового переименования
 

Код:
 
foreach ($f_1c in $files){
    if ((Test-Path $f_1c) -like 'true'){
        $f = $f_1c.Replace('.dt','_.dt')
        Rename-Item $f_1c -NewName $f
        }
}
 

 
Моя попытка сделать его многоразовым...

Код:
 
Foreach ($f_1c in $files){
    if ((Test-Path $f_1c) -like 'true'){
        $pf = '.dt'
        $f = $f_1c.Replace($pf,{'_' + $pf})
        Rename-Item $f_1c -NewName $f  
        if ((Test-Path $f) -like 'true'){
            $f = $f.Replace($pf,{'_' + $pf})
            Rename-Item $f -NewName {$f  + '_'}
            }  
        }
}
 

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 14:11 24-01-2020 | Исправлено: newhk, 14:36 24-01-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 226

Компьютерный форум 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