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

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

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

KLASS



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

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников, кодировка скриптов на PowerShell должна быть 1251 (ANSI). Начиная с версии PowerShell Core 6.0, кодировка по умолчанию UTF8NoBOM.
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
Преобразование алиасов в скриптах к полным командам.
Получение детализированной информации из файлов.
Скачивание файлов по списку из файла .csv, ведение лога
Компиляция страниц html сохранённых из браузера в chm
Скрипт модифицированного вывода get-winevent, с добавлением доп. данных из событий, т.е. из узлов Data
Скрипт для получения списка имён и размеров всех альтернативных потоков, т.е. ADS файлов и каталогов.
 
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?

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

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

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

Всего записей: 7786 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS_2, 19:47 12-03-2019
iNNOKENTIY21



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Серия: Кому нибудь пригодится
 
Скрипты PowerShell
 
Создание ярлыка: New-Shortcut
Тестирование ярлыков: Test-Shortcut
Тест псевдонимов на программы: Test-AppsAlias
GUID папок из профиля пользователя: Get-UserProfileFoldersGUID
Статус вкл./выкл. брандмауэра: Get-FirewallStatus
Поиск пути модуля: Find-ModulePath

Всего записей: 1444 | Зарегистр. 16-08-2012 | Отправлено: 22:43 04-02-2019 | Исправлено: iNNOKENTIY21, 23:12 04-02-2019
Skodat50

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

Всего записей: 1 | Зарегистр. 08-02-2019 | Отправлено: 06:23 08-02-2019
Cyril Konst



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен скрипт не дающий пользователю сделать "Завершение сеанса" на терминальном сервере 2003, если у него запущена 1С.
Я так понимаю, надо проверять: query process 1Cv7.exe
Если такой скрипт положить в групповую политику, чтобы он выполнялся при выходе, сможет ли он предотвратить продолжение выхода?

Всего записей: 632 | Зарегистр. 12-08-2003 | Отправлено: 12:13 08-02-2019 | Исправлено: Cyril Konst, 12:14 08-02-2019
iNNOKENTIY21



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Windows 10. Обсуждение работы (XI) :: Death_INN — 20:56 08-02-2019
 
В ярлыке, в поле Объект:

Код:
 
powershell.exe /nologo /noexit /command "function Get-NTFSLinks ([string]$path) {Get-ChildItem $path -Force | Where-Object LinkType | Format-Table -AutoSize Name, LinkType} Get-NTFSLinks"
 

поправил, забыл $path
 
можно функцию в файл сохранить и вызывать уже файл, типа: powershell.exe /nologo /noexit /command "имяФайла.ps1"
 
Добавлено:
А еще надо поле Рабочая папка в ярлыке очистить.

Всего записей: 1444 | Зарегистр. 16-08-2012 | Отправлено: 20:48 08-02-2019 | Исправлено: iNNOKENTIY21, 21:03 08-02-2019
Death_INN

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21, не пашет. При вызове из любой папки игнорирует путь и отображает хард линки из каталога, указанного в поле ярлыка "Рабочая папка"
Щас попробую со скриптом, ну а вообще, хотелось бы такое замутить:
 
Get-ChildItem -File -Force | ForEach-Object {Add-Member -MemberType NoteProperty -InputObject $_ -Name "HardLinkCount" -Value (fsutil hardlink list $_.FullName).count -PassThru} | Where-Object HardLinkCount -gt 1 | Format-Table -a Mode, LastWriteTime, Length, Name, HardLinkCount
 
Это и имел ввиду, когда раньше говорил про длинный код.

Всего записей: 1597 | Зарегистр. 24-10-2002 | Отправлено: 21:18 08-02-2019 | Исправлено: Death_INN, 21:25 08-02-2019
iNNOKENTIY21



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN
Создать файл, например Get-HardLinks.ps1. Добавить входной параметр и вставить код:

Код:

param
(
    [string]$Path
)

 
$Path | Get-ChildItem -File -Force |
    ForEach-Object {Add-Member -MemberType NoteProperty -InputObject $_ -Name "HardLinkCount" -Value (fsutil hardlink list $_.FullName).count -PassThru} |
    Where-Object HardLinkCount -gt 1 | Format-Table -AutoSize Mode, LastWriteTime, Length, Name, HardLinkCount

сохранить и добавить в команду ярлыка: powershell.exe /nologo /noexit /file "К:\Файлу\Путь\Get-HardLinks.ps1"

Всего записей: 1444 | Зарегистр. 16-08-2012 | Отправлено: 22:51 08-02-2019
Death_INN

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21, в конец скрипта добавил "cd $Path" или это не лучший способ?

Всего записей: 1597 | Зарегистр. 24-10-2002 | Отправлено: 00:05 10-02-2019
iNNOKENTIY21



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

Цитата:
в конец скрипта добавил "cd $Path" или это не лучший способ?  

Если Вам нужно такое поведение, и способ работает, почему бы и нет, на то и скрипт, а не компиляция.
Править можно под меняющиеся требования и задачи

Всего записей: 1444 | Зарегистр. 16-08-2012 | Отправлено: 00:31 10-02-2019
Smitis

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

Цитата:
Создание ярлыка: New-Shortcut

Вот создал бы кто командлет для создания ярлыка для консольных программ, с соответствующими параметрами для них... Или я плохо искал? Никому не попадался?


----------
Разум когда-нибудь победит

Всего записей: 1611 | Зарегистр. 09-02-2003 | Отправлено: 16:52 10-02-2019
farag



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь с вычленением диска с буквой D при условии, что диск один и разбит на два логических, где C — загрузочный, а D — для хранения файлов.
Метод а-ля этот не прокатил.

Код:
 
(Get-Disk | Where-Object {$_.BusType -ne "USB" -and $_.IsBoot -eq $false} | Get-Partition | Get-Volume | Where-Object {$_.DriveLetter -ne $null}).DriveLetter + ':\'
 

Пытался с помощью

Код:
 
Get-CimInstance -Class Win32_DiskDrive
 

, но не хватило знаний.

Всего записей: 729 | Зарегистр. 27-07-2009 | Отправлено: 11:31 11-02-2019 | Исправлено: farag, 11:37 11-02-2019
LevT



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

Код:
 
Get-Disk -Number (Get-Partition -DriveLetter 'd').DiskNumber  
 

То или нет?
 
 
Добавлено:
В свойствах раздела есть ссылка на диск, а у тома её нет - потому что том бывает слеплен из нескольких разделов разных дисков, а то и вообще "из астрала" (сетевой подсистемы хранения)
 
А вот то, что свойство-буква есть не только у тома, но и у раздела - преднамеренное нарушение логики для удобства решения вот таких вот задач "админами локалхоста".
Иначе пришлось бы лезть в потроха тома и из них уже определять составляющие разделы.  
Что для локалхоста оверкилл.

Всего записей: 11418 | Зарегистр. 14-10-2001 | Отправлено: 11:49 11-02-2019 | Исправлено: LevT, 12:14 11-02-2019
farag



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Как бы надо не указать жестко букву, а запустив скрипт, всегда находить нужный диск (для будущего хранения хлама) вне зависимости от буквы (диск один и разбит на два логических).

Всего записей: 729 | Зарегистр. 27-07-2009 | Отправлено: 12:31 11-02-2019 | Исправлено: farag, 12:32 11-02-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
тогда нужно точные критерии поиска
А вдруг таких дисков несколько - как выбирать из них?
(У меня частенько подоткнуты чужие диски)
 
Вообще, для этого метки томов существуют.

Всего записей: 11418 | Зарегистр. 14-10-2001 | Отправлено: 13:17 11-02-2019 | Исправлено: LevT, 13:22 11-02-2019
farag



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
С меткой, кажется, не то. Исхожу из того, что есть ситуации: 2 диска, 1 диск и 1 диск, разбитый на 2.

Всего записей: 729 | Зарегистр. 27-07-2009 | Отправлено: 13:32 11-02-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
У меня всё сложнее, проверить не могу.
Например, "помойкой" является родительский раздел на котором лежит загрузочный vhdx - и таких дисков чаще всего подоткнуто несколько.
 
Но вообще-то у разделов есть свойства IsBoot и IsSystem.

Всего записей: 11418 | Зарегистр. 14-10-2001 | Отправлено: 13:40 11-02-2019 | Исправлено: LevT, 13:44 11-02-2019
farag



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

Цитата:
есть свойства IsBoot и IsSystem

Да, все проверяется, но при ситации 1 диск, разбитый на 2, я не смог вычленить тот, на котором не стоит ОС.

Всего записей: 729 | Зарегистр. 27-07-2009 | Отправлено: 13:42 11-02-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
get-partition | where {-not $_.IsBoot -and -not $_.IsSystem}
У меня таких 14 штук - помойки и служебные разделы вперемешку: так что дальше сам.
 
Системным решением было бы всем "помойкам" назначать метки - это я давно делаю и ориентируюсь на них, визуально.
Если-когда припрёт, буду назначать буквы скриптом.
 
 
 
Добавлено:
 
Когда-то баловался монтированием помоек в подпапки C:\Automount
Тоже рабочий вариант

Всего записей: 11418 | Зарегистр. 14-10-2001 | Отправлено: 13:48 11-02-2019 | Исправлено: LevT, 14:21 11-02-2019
westlife



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

Всего записей: 641 | Зарегистр. 12-12-2006 | Отправлено: 14:19 11-02-2019 | Исправлено: westlife, 15:22 11-02-2019
LevT



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

Код:
 
$bootpartition = Get-Partition -DriveLetter C  
$bootdisknumber = $bootpartition.DiskNumber
try {
    $d_partition = Get-Partition -DiskNumber $bootdisknumber -PartitionNumber (1 + $bootpartition.PartitionNumber) -ErrorAction Stop
} catch {
    'Ну нет у тебя раздела за виндовым С, придётся самому назначить $d_partition своим алгоритмом'
}
Write-Output $d_Partition.DriveLetter
 

 
Вот только порядок разделов тема совершенно отдельная, и могут быть сюрпризы в зависимости от истории применения утилит типа акронис-парагон-минитул-whatever
 
 
Добавлено:
 
ЗЫ. Самый очевидный алгоритм с поддержкой от OC - задать метки нужных томов
В дополнение или вместо того, можно смонтировать нужные тома по известным путям от корня С (а не только буквами)

Всего записей: 11418 | Зарегистр. 14-10-2001 | Отправлено: 14:42 11-02-2019 | Исправлено: LevT, 14:57 11-02-2019
westlife



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

Цитата:
Вот только порядок разделов тема совершенно отдельная, и могут быть сюрпризы в зависимости от истории применения утилит типа акронис-парагон-минитул-whatever  

Добавил вариант с любым расположением второго раздела.

Всего записей: 641 | Зарегистр. 12-12-2006 | Отправлено: 15:00 11-02-2019
Открыть новую тему     Написать ответ в эту тему

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

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru