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

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qw12
 
Огромное Вам спасибо Специалист! Данный сценарий PowerShell работает на 100%, в "*.ini-файле" можно оставлять комментарии (;).
Последовательно возникла идея, можно ли реализовать следующий алгоритм:
1. Получать значение параметров из "*.ini-файла" с именем файла сценария PowerShell.
2. Если "*.ini-файл" отсутствует рядом с файлом сценария PowerShell, и (или) структура секций повреждена, то, в таком случае, создать "*.ini-файл" с именем файла сценария PowerShell и стандартным содержимым, например..
3. Можно ли управлять выполнением конкретного участка сценария PowerShell из "*.ini-файла", например.
 
Буду Вам очень признателен за помощь.
 
iNNOKENTIY21
 
Благодарю Вас! Ранее не нашел ссылки на данную конструкцию, постараюсь её изучить завтра. Пожалуйста, присоединяйтесь к обсуждению.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 01:07 25-04-2023 | Исправлено: Artem_Butenko, 01:14 25-04-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Для своего файл параметров, ini устарел и в powershell не используется.
 
Есть встроенные средства для:
psd1 — о файлах данных - PowerShell, Import-PowerShellDataFile
json — ConvertFrom-Json, ConvertTo-Json
 
http://ramblingcookiemonster.github.io/PowerShell-Configuration-Data/

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 20:58 25-04-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Я хочу, чтобы веб-сервер отдавал данные, которые получает скрипт и обновлял их через определенное количество времени.
Т.е. есть БД, в которой каждые 10 минут могут происходить изменения.
Я опрашиваю эту БД в PowerShell и результат помещаю в переменную.
Эту переменную я указываю как данные для веб-сервера.
Как мне заставить PODE обновляться каждые "N" минут или организовать работу скрипта для динамического обновления?
Пример кода запроса из БД (данные абстрактные):
Подробнее...

Всего записей: 21 | Зарегистр. 12-04-2023 | Отправлено: 14:37 02-06-2023 | Исправлено: toadmr, 15:46 02-06-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сделал через IIS и цикл While

Всего записей: 21 | Зарегистр. 12-04-2023 | Отправлено: 17:32 08-06-2023
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите команду в powershell для получения a) списка папок и подпапок в древовидном виде, типо такого https://i.stack.imgur.com/a2Nsj.jpg b) списка папок и подпапок с файлами в древовидном виде, типо такого https://i.stack.imgur.com/fFqg5.jpg
и чтобы в итоговом файле прописывалось кол-во папок и файлов.
 
И может есть ещё опция какая для построения HTML или MD документа такого вида?
https://images2.imgbox.com/5e/09/jSjLxPkt_o.png
Ибо plaintext не всегда удобен для восприятия.
 
И ещё, при использовании команды tree /F > 12345.txt находясь в папке с кириллическим названием получаются на выходе кракозябры, в самой консоли отображается всё корректно. Как это можно исправить?


Кстати, это что за штука? https://docs.powershelluniversal.com/userinterfaces/components/data-display/tree-view
типо менеджер команд который через апи работает и передаёт команды на исполнение в консоль?

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 18:56 20-06-2023 | Исправлено: pressF, 18:56 20-06-2023
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в общем не получилось у меня за пару вечеров нагуглить (а гуглил я мощно) ничего по команде tree
 
оставил такой вариант Get-ChildItem | tree /f > tree.log
и по-прежнему необходимо формировать внизу кол-во папок и файлов и нужно как-то имя родительской памяти подставлять вместо точки. ну и избавиться от мусора в первых строках вроде номера диска.
кстати кодировка у лога получается UTF-16 LE. почему так?
 
вот такой вывод содержимого папки с раскраской
https://github.com/posh-projects/Tree
https://www.powershellgallery.com/packages/Tree/1.0.1
здесь мне не удалось записать вывод используя Get-ChildItemTree | Out-File D:\12345.txt
и хочется чтобы сначала шли папки и за ними файлы в алфавитном порядке. может это поможет для решения? https://github.com/LarrysGIT/Powershell-Natural-sort
 
и ещё если вы не можете запустить скрипт почитайте тут https://ru.stackoverflow.com/questions/935212/powershell-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2-%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BE-%D0%B2-%D1%8D%D1%82%D0%BE%D0%B9-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5
мне помогло
 
экспорт древовидного списка в excel
https://www.alphr.com/export-folder-structure-to-excel/
 
экспорт древовидного списка в html, вот это прям точное решение
https://key2consulting.com/powershell-file-directory-tree-view/
доработать отображения можно как угодно. это хмтл файл
 
В будущем хочу попробовать настроить фоновое отслеживания изменении в каталоге, формирование нового выходного хтмл, пуш этого файла в репозитории гитхаба.
А может уже решали задачу и есть готовый вариант?)

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 12:53 22-06-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pressF
Цитата:
по-прежнему необходимо формировать внизу кол-во папок и файлов

Например:
PowerShell:
Код:
[IO.DirectoryInfo] $Path = 'C:\Users\User\Documents\WindowsPowerShell'
 
if (!$Path.Exists) { Write-Error -Message "$Path - путь не найден!!!" }
 
$fileTree = Join-Path -Path $Path.Parent -ChildPath ($Path.BaseName + '.tree')
$dirlist  = dir $Path -Recurse
$dirCount = ($dirlist | ? Attributes -eq Directory).Count
$fMeasure = $dirlist | ? Attributes -ne Directory | measure -Sum Length
 
tree /F $Path | select -Skip 2 | Out-File -Encoding utf8 $fileTree
 
Add-Content -LiteralPath $fileTree -Value " Папок: $dirCount"
Add-Content -LiteralPath $fileTree -Value "Файлов: $($fMeasure.Count)"
Add-Content -LiteralPath $fileTree -Value "Размер: $($fMeasure.Sum)"
Add-Content -LiteralPath $fileTree -Value "Размер: $([Math]::Round($fMeasure.Sum/1MB, 3)) Мб"

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 19:33 22-06-2023
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
ошибку выдаёт https://i.postimg.cc/d1JVN8tK/powershell-ise-Ta-AOs4-LB80-2023-06-24-08-17-29.png

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 04:19 24-06-2023
iNNOKENTIY21



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

FullName не хватает.
Замените строчку: $fileTree = …
на
Код:
$fileTree = Join-Path -Path $Path.Parent.FullName -ChildPath ($Path.Name + '.tree')

или прямо укажите путь для сохранения файла:

Код:
$fileTree = 'D:\Fonts\AlfaBravo.tree'

 
пример.0.5

Код:
[IO.DirectoryInfo] $Path = 'C:\Users\User\Documents\WindowsPowerShell'
 
if (!$Path.Exists) { Write-Error -Message "$Path - путь не найден!!!" }
 
$fileTree = Join-Path -Path $Path.Parent.FullName -ChildPath ($Path.Name + '.tree')
$dirlist  = dir $Path -Recurse
$dirCount = ($dirlist | ? Attributes -eq Directory).Count
$fMeasure = $dirlist | ? Attributes -ne Directory | measure -Sum Length
 
tree /A /F $Path | select -Skip 2 | Out-File -Encoding ascii $fileTree
 
Add-Content -LiteralPath $fileTree -Value " Папок: $dirCount`nФайлов: $($fMeasure.Count)`nРазмер: $([Math]::Round($fMeasure.Sum/1MB, 3)) Мб"
Notepad.exe $fileTree

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 18:52 24-06-2023
BOA_KAA



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
pressF
 
Коллеги, ну тогда здесь:
 
tree /A /F $Path | select -Skip 2 | Out-File -Encoding ascii $fileTree  
 
избавьтесь вообще от параметра "-Encoding ascii", или замените на "-Encoding utf8" чтобы с кодировкой проблем не было, а то наш великий и могучий русский язык тогда при выводе хромает.
 
P.S. Ну и в проверке пути на существование не лишне будет добавить выход, а то нелогично как-то получается:
 
if (!$Path.Exists) { Write-Error -Message "$Path - путь не найден!!!"; return -1}

Всего записей: 310 | Зарегистр. 01-12-2004 | Отправлено: 23:45 02-07-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BOA_KAA, в первом моём примере, кодировка итак utf8, демо самой возможности смены кодировки. Во втором примере лог открывается в блокноте, есть проблемы с отображением в блокноте?
Write-Error — справедливо. Но это потому, что в пример не вошло $ErrorActionPreference = 'STOP'
 

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 01:11 03-07-2023
BOA_KAA



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Да, при указанном флаге "-Encoding ascii" вместо русского получаем "???"
 
E:\DEBIAN
|   firmware-11.6.0-amd64-DVD-1.iso
|   ...
|   rufus-3.20p.exe
|   rufus.ini
|   ????? ????.txt
|   ...
 
А в остальном, полностью поддерживаю

Всего записей: 310 | Зарегистр. 01-12-2004 | Отправлено: 08:45 03-07-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BOA_KAA, интересно, а там у Вас что?
 
апплет Регион: rundll32.exe Shell32.dll, Control_RunDLL Intl.cpl,,1
 


Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 13:21 03-07-2023
pressF



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

Цитата:
Замените строчку: $fileTree = …

работает
 
а почему один пробел перед строкой добавляет?
 
 
Добавлено:
и вот ещё обнаружил что обрезает первые буквы
 

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 15:13 03-07-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pressF, пробел, потому, что он там есть, если не нужен, уберите, сразу после первой кавычки.
" Папок: $dirCount`nФайлов: $($fMeasure.Count)`nРазмер: $([Math]::Round($fMeasure.Sum/1MB, 3)) Мб"
Не знаю, что там обрезает, у меня не обрезает, на первом Вашем скрине тоже не обрезает.

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 18:23 03-07-2023
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Ну вот сейчас хорошо.
Я не знаю почему обрезал, сейчас не обрезает.
А то что папок 0 это потому что он подпапки не учитывает? У меня есть 2 папки внутри так-то

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 21:02 03-07-2023
iNNOKENTIY21



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

Цитата:
А то что папок 0 это потому что он подпапки не учитывает? У меня есть 2 папки внутри так-то

это хорошо, что заметили это ошибка! фича
 
пример.0.7 исправление ошибок, рефакторинг, бла-бла. Уже замахнёмся на скрипт
TreePlus.ps1
Код:
param (
    # По умолчанию работает с текущей директорией.
    [Parameter(ValueFromPipeline)]
    [ValidateScript({ Test-Path -LiteralPath $_ -PathType Container })]
    [IO.DirectoryInfo] $Path = $PWD.Path
)
 
$dirlist   = Get-ChildItem -Force -Recurse -LiteralPath $Path
$dirOnly   = $dirlist | Where-Object -Property Attributes -Match Directory
$dirCount  = if ($dirOnly) { $dirOnly.Count } else { 0 }
$fMeasure  = $dirlist | Where-Object -Property Attributes -NotMatch Directory | Measure-Object -Sum Length
$fileCount = if ($fMeasure) { $fMeasure.Count } else { 0 }
$fileSize  = if ($fMeasure) { "$([Math]::Round($fMeasure.Sum/1MB, 3)) Mb" } else { "0 Mb" }
 
$OutputEncodingBackup = [Console]::OutputEncoding
[console]::OutputEncoding = [Text.Encoding]::GetEncoding(1251)
 
tree /A /F $Path | Select-Object -Skip 2
 
[console]::OutputEncoding = $OutputEncodingBackup
 
"Папок: $dirCount, Файлов: $fileCount, Размер: $fileSize"

Думаю не стоит запускать в корне диска…  
Пример вызова в консоли PowerShell: К:\Скрипту\Путь\TreePlus.ps1 -Path К:\Директории\Нужной\Путь\
или в лог: К:\Скрипту\Путь\TreePlus.ps1 -Path К:\Директории\Нужной\Путь\ | Out-File -LiteralPath 'К:\логу путь\tree.log'

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 21:55 03-07-2023
BOA_KAA



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Точно также как у Вас, один в один .
PwS 7.3.5

Всего записей: 310 | Зарегистр. 01-12-2004 | Отправлено: 22:57 03-07-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BOA_KAA
Цитата:
PwS 7.3.5  
из за версии пошика, да.
а выше с GetEncoding(1251) норм?
 
как бы это магическое число (1251) получать из системы?
[console]::OutputEncoding.WindowsCodePage — оно?

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 23:35 03-07-2023
ExDimanya



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21В батнике ASPS вроде есть настройка языка.


----------
Клон полезняшек от Ratiborus
Телеграм
Sic transit gloria mundi

Всего записей: 12769 | Зарегистр. 19-04-2018 | Отправлено: 23:43 03-07-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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