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

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

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

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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В 5.1 без кракозябров получается только через сохранение в файл и его открытие в заданной кодировке:
Код:
$url = "https://rkn.gov.ru/opendata/7705846236-InformationDistributor/data-20241220T0000-structure-20161206T0000.xml"
Invoke-RestMethod -Uri $url -OutFile rkn.xml
[xml]$data = Get-Content -Path "rkn.xml" -Encoding UTF8

Если напрямую в переменную: $data = Invoke-RestMethod -Uri $url, то побороть их не удается даже при смене кодировки консоли

Всего записей: 365 | Зарегистр. 19-05-2006 | Отправлено: 13:19 28-12-2024
westlife



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

Цитата:
Если напрямую в переменную: $data = Invoke-RestMethod -Uri $url, то побороть их не удается даже при смене кодировки консоли

проверил, кодировку портит Invoke-RestMethod при stdout
через HttpClient работает правильно:

Код:
Add-Type -AssemblyName 'System.Net.Http' -ErrorAction Stop
$httpClient = [System.Net.Http.HttpClient]::new()
$httpClient.Timeout = [timespan]::FromSeconds(200)
$url = "https://rkn.gov.ru/opendata/7705846236-InformationDistributor/data-20241220T0000-structure-20161206T0000.xml"
[xml]$data = $httpClient.GetStringAsync($url).Result  
$data.register.record.distributorName

Всего записей: 1627 | Зарегистр. 12-12-2006 | Отправлено: 15:01 28-12-2024
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В данном случае надо забить на автоматизацию PowerShell в Invoke-RestMethod и воспользоваться слегка более низким уровнем:

Код:

$url      = 'https://rkn.gov.ru/opendata/7705846236-InformationDistributor/data-20241220T0000-structure-20161206T0000.xml'
$xml      = [xml]::new()
$resolver = [System.Xml.XmlUrlResolver]::new()
$settings = [System.Xml.XmlReaderSettings]::new($resolver)
$reader   = [System.Xml.XmlReader]::Create($url, $settings)
 
$xml.Load($reader)
 
$xml.register.record.services.service.where({ $_.accessLimited -eq 'true' })
$xml.register.record | Where-Object entryNum -EQ "2-PP"

 
 
Добавлено:
Раньше у на ни одной коровы функции не было, а теперь целых две, заживём!

Всего записей: 3659 | Зарегистр. 16-08-2012 | Отправлено: 15:04 28-12-2024
virjokk

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

Цитата:
Раньше у на ни одной коровы функции не было, а теперь целых две

Да, придется видимо писать свои версии этих командлетов. Ну или пользовать более низкий уровень, как вы или Westlife. Только бы до ассемблера не опуститься

Всего записей: 365 | Зарегистр. 19-05-2006 | Отправлено: 09:40 29-12-2024 | Исправлено: virjokk, 09:50 29-12-2024
Rucha

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

Всего записей: 1337 | Зарегистр. 31-07-2001 | Отправлено: 14:35 29-12-2024 | Исправлено: Rucha, 14:42 29-12-2024
LevT



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

 
Купил человеку ноут типа без ОС, обнаружил на якобы неразмеченном диске сервисную-диагностическую винду, восстановил удалённые разделы и изучаю...
 
 
В частности, там установлен такой зверь
https://www.microsoft.com/en-us/download/details.aspx?id=54322
 
по ссылке маленький даунлоадер, тянет и запускает UCSLogTool_Installer.msi (75Gb весом)
 
 
 
Этот установщик ставит комплект скриптов для вытягивания логов оборудования и некоторых виндовых фич. Правда, инструмент 2018 года, и больше не обновлялся. Гуглу про него известно примерно ничего.  
 
Что я сходу заметил в скриптах из этого комплекта - они знают, какие GUID в реестре за что отвечают.
 
Кому-то, может, будет интересно поковырять...

Всего записей: 17823 | Зарегистр. 14-10-2001 | Отправлено: 15:53 06-01-2025 | Исправлено: LevT, 15:57 06-01-2025
AngelNet



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите переписать shell-скрипт для линукс систем под виндовс (PS или cmd).
https://www.upload.ee/files/17599885/speedtest_RU.sh.html
 
зеркало на пастебин:
https://pastebin.com/JEDhNZaJ
 
скрипт измеряет скорость интернет соединения с текущего хоста до выбранных в скрипте локаций.

----------
animelist

Всего записей: 7563 | Зарегистр. 11-03-2004 | Отправлено: 23:37 06-01-2025
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, пожалуйста помогите корректно конвертировать следующий файл системного реестра в формат CMD и PowerShell.
Для CMD сделал следующий конструкт, однако данные добавляются не полностью, да и к тому же запрашивается подтверждение на перезапись.
Для PowerShell выполнил следующий сценарий. Соответственно, ошибка при добавлении второго параметра в системный реестр.
Буду Вам очень признателен за помощь.

Всего записей: 731 | Зарегистр. 19-02-2008 | Отправлено: 06:39 10-01-2025
virjokk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для CMD символ & надо экранировать ^&:
Код:
Reg.exe add "HKCU\SOFTWARE\Pumba" /ve /t REG_SZ /d "powershell.exe \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; ^& '%%1'\"" /f

А в PS тоже экранировать, но уже одинарные кавычки, удваивая их:
Код:
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\RunAs\Command' -Name '(default)' -Value 'powershell.exe "-Command" "if((Get-ExecutionPolicy ) -ne ''AllSigned'') { Set-ExecutionPolicy -Scope Process Bypass }; & ''%1''"' -PropertyType String -Force

Всего записей: 365 | Зарегистр. 19-05-2006 | Отправлено: 07:58 10-01-2025 | Исправлено: virjokk, 08:02 10-01-2025
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk
 
Спасибо Вам за помощь. Как я понимаю PowerShell работает с системным реестром, как с дисками, при этом для добавления значений в ветку "HKEY_CLASSES_ROOT" её нужно смонтировать?
Если выполнить сценарий ничего не происходит. Подскажите, как с этим быть. Сталкиваюсь с таким случаем впервые.

Всего записей: 731 | Зарегистр. 19-02-2008 | Отправлено: 10:05 10-01-2025
BorlandIMHO

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

Цитата:
для добавления значений в ветку "HKEY_CLASSES_ROOT" её нужно смонтировать?

Нет. С ней просто нужно работать не через алиас [HKCR], а через [HKLM\SOFTWARE\Classes].
Провайдер powershell "Registry" никакого  HKCR: не умеет, только HKLM: и HKCU:

Всего записей: 2850 | Зарегистр. 12-10-2006 | Отправлено: 10:27 10-01-2025
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
 
Пожалуйста, покажите, как это работает на моём примере выше.

Всего записей: 731 | Зарегистр. 19-02-2008 | Отправлено: 10:43 10-01-2025
BorlandIMHO

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

Цитата:
как это работает на моём примере выше

Тупо замените в "своём скрипте" {-LiteralPath 'HKCR:\Microsoft.PowerShellScript.1\Shell\RunAs'} на {-LiteralPath 'HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\RunAs'}

Всего записей: 2850 | Зарегистр. 12-10-2006 | Отправлено: 10:58 10-01-2025
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Инструкция по анализу своей истории просмотров на ютубе:
 
1) Заказываем, скачиваем и распаковываем Takeout:
 
2)  

Код:
$json = Get-Content 'F:\takeout-20250108T163862Z-001\Takeout\YouTube and YouTube Music\history\watch-history.json' | ConvertFrom-Json

 
3)  

Код:
$json | get-member
$json.count
$json.activityControls | group -NoElement
$json.header | group -NoElement
$json.products | group -NoElement
 
$json.subtitles.name                                   #кажется, это единственное поле, откуда можно сразу взять полезные данные
 
$json.subtitles.name | group -NoElement | sort count   #название канала, и сколько штук видео из каждого смотрел
 
$json.subtitles | where name -match 'Энциклоп'         #название и url тех каналов, где матчится название.

 
 
Остальные поля этого json надо парсить, но они не выглядят полезными.
Возможно что-то есть в соседних json из Takeout.
Добавляйте, пополню.
 
Я не нашёл даже способа связать просмотренные видeo с каналом их создателя.
 
 
Вся выдача напоминает сберовскую "выписку операций по карте" - она в html или pdf, и они принципиально не дают csv хотя бы, даже если настаивать через поддержку. Но тот pdf, теоретически, поддаётся хотя бы AI анализу - а здесь какое-то издевательство.
 
 
Но есть какие-то самопальные библиотеки для добывания из ютуба подробностей: недавно на хабре пробегало такое для питона.
 
 
Можно ещё зарегаться в гугле как developer и получить ключ для более-менее подробного официального API.
Понятно, что будут какие-то ограничения, но возможно, что свою собственную историю проанализировать хватит. Кто-то пробовал?

Всего записей: 17823 | Зарегистр. 14-10-2001 | Отправлено: 14:49 12-01-2025 | Исправлено: LevT, 15:32 12-01-2025
qenq99

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Команда Powershell переименование папки  
Можно ли поставить условие для этой команды
Переименование папки на рабочем столе
Rename-Item "Desktop\Network" "Desktop\Интернет" ?
 
Пример: Если уже существует папка Интернет на рабочем столе
Удалить Network, то есть не переименовывать (да и не сможет)
А если нет папки Интернет, переименовать папку Network в Интернет

Всего записей: 33 | Зарегистр. 29-12-2014 | Отправлено: 21:49 13-01-2025
virjokk

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

Код:
if ([IO.Directory]::Exists("$env:USERPROFILE\Desktop\Network")) {
    if ([IO.Directory]::Exists("$env:USERPROFILE\Desktop\Интернет")) {
       Remove-Item -Path "$env:USERPROFILE\Desktop\Network" -Recurse -Force
    } else {
       Rename-Item -Path "$env:USERPROFILE\Desktop\Network" -newName "Интернет"
    }
}

Всего записей: 365 | Зарегистр. 19-05-2006 | Отправлено: 00:17 14-01-2025
qenq99

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk
Благодарю!
Работает отлично

Всего записей: 33 | Зарегистр. 29-12-2014 | Отправлено: 11:37 14-01-2025
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь делал для контекстного меню пункт перемещения файлов из выделенных папок на уровень выше на PS?
Нужно с добавлением в конец названия 1,2 и тд если файлы по именам вдруг совпадут.

Всего записей: 1425 | Зарегистр. 29-03-2023 | Отправлено: 14:41 17-01-2025 | Исправлено: pressF, 14:42 17-01-2025
mrSaigon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
В консоли cmd набираю:  echo %time:~0,2%-%time:~3,2%
Получаю ответ: 1-30
Задача, как получить в ответе: 01-30 ?
Т.е. если текущее время от 0 до 9 часов, чтоб в выводимой строке перед цифрой добавлялся 0.
Примеры вывода: 00-20, 01-20, 02-20 и т.д.

Всего записей: 132 | Зарегистр. 05-11-2004 | Отправлено: 03:04 30-01-2025
Simple Code

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

Цитата:
Задача, как получить в ответе: 01-30 ?

Например, через переменную:

Код:
 
if %time:~0,2% LSS 10 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
echo %hour%-%time:~3,2%
 


Всего записей: 278 | Зарегистр. 19-11-2022 | Отправлено: 04:43 30-01-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 227 228 229 230 231 232

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

Рейтинг.ru