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

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

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



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

Цитата:
Следующий ход очевиден, не?  

Да я просто отсюда скопировал: http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=300#9

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 15:37 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Правда, я сам не справился сделать боле-менее красиво:  на + ':' - пошик думает, что это добавление элемента к массиву.
Потому, вот

Код:
 
   Get-Volume | select -expand DriveLetter | Foreach {$_ + ':'}
 

 
Добавлено:
farag
Если бы я каждый раз стонал по поводу непонятных эффектов некоторых ваших скриптиков на моих системах...  никому от этого лучше не стало бы
 
Поскольку тут все разработчики - давайте сперва думать, как можно использоваться чужими изделиями и недоделками в своих интересах  
А уже потом предъявлять претензии к тому, что не разжевали и не положили в рот.
(Я убеждён, что такого рода претензии вовсе непродуктивное занятие)

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:39 25-07-2018 | Исправлено: LevT, 15:45 25-07-2018
farag



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

Цитата:
Потому, вот


Код:
 
filter Get-FirstResolvedPath
{
    Get-Volume | Select-Object -expand DriveLetter | ForEach-Object {$_ + ':\'} | Join-Path -ChildPath $_ -Resolve -ErrorAction SilentlyContinue | Select-Object -First 1
}
'Программы\Прочее\Office_task.bat' | Get-FirstResolvedPath | Copy-Item C:\Users -Force
'Программы\Прочее\xml\Office.xml' | Get-FirstResolvedPath | Get-Item | Get-Content -Raw | Register-ScheduledTask -TaskName "Office" -Force
 

Оно уже почти работает, но не копирует )))

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 15:45 25-07-2018 | Исправлено: farag, 15:52 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
 
Поскольку Get-FirstResolvedPath сейчас возвращает скаляр строку - можно попробовать обернуть её в объект с единственным свойством Path
 
select @{N='Path';E={$_}}

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:51 25-07-2018 | Исправлено: LevT, 15:52 25-07-2018
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то конструкция совсем выглядит адово для такой мелкой затеи. Или мне так кажется?..

Цитата:
select @{N='Path';E={$_}}  

Туплю, но куда ее впендерить?

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 16:06 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Copy-Item должно хавать исходный путь из трубы как по значению, так и по имени свойства.
По значению оно этого делать не хочет - но возможно я подачу неправильно приготовил.
Предлагаю сперва попробовать по имени свойства
 
То есть селект, создающий из скаляра вектор равный -Path> PSобъект со свойством Path - должен стоять перед Copy-Item

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 16:14 25-07-2018 | Исправлено: LevT, 16:19 25-07-2018
farag



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

Цитата:
должен стоять перед Copy-Item


Код:
 
'Программы\Прочее\Office_task.bat' | Get-FirstResolvedPath | Select-Object @{N='Path';E={$_}} Copy-Item C:\Users -Force
 

Select-Object : Не удается найти позиционный параметр, принимающий аргумент "Copy-Item".

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 16:25 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
| Copy-Item
 
а то Select-Object думает, что ты хочешь скормить ему параметр(аргумент) со значением 'Copy-Item'
 и не понимает, к какому из своих позиционных параметров это значение привязать

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 16:41 25-07-2018 | Исправлено: LevT, 16:43 25-07-2018
farag



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

Цитата:
скормить ему параметр

Это я догадался. Как же переделать опять? )

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 16:48 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
по трубе всегда передаются PSObject-ы - то есть многомерные вектора [Param1, Param2...ParamN] - притом в количестве 0..M
 
командлеты берут сначала  
1) именованные параметры, затем
2) пытаются догадаться, к каким параметрам можно привязать позиционные аргументы (непонятки приводят к ошибке), и наконец
3) пытаются привязать к оставшимся несвязанными обязательным параметрам что-то прилетевшее из трубы (при неудаче опять ругань)
 
 
Добавлено:
farag
а теперь на что ругается?
 
 
Добавлено:
 
У меня срабатывает передача параметров и по скалярному значению (без курсива), и по проекции имени свойства
   

Код:
 
   $child = 'unattend.xml'
   $path = Get-Volume | select -expand DriveLetter | % {$_ + ':'}  | Join-Path -ChildPath $child -Resolve -ErrorAction SilentlyContinue | Select-Object -First 1  
   $path  | select @{N='Path';E={$_}} | Copy-Item -Destination C:\Intel -Verbose  
VERBOSE: Performing the operation "Copy File" on target "Item: C:\unattend.xml Destination: C:\Intel\unattend.xml".
 

(PS запущен с элевацией)
Скрипт находит определённый файлик в корне любого диска и ховает его в указанное место
 
 
 
 
   

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 16:49 25-07-2018 | Исправлено: LevT, 18:35 25-07-2018
YuS_2



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

Цитата:
Не путай диски, разделы и тома.

дадад, назвал неправильно, но только на приводе dvd, например, нет никаких разделов и файловых систем тоже, он пуст, но буква есть и она будет перечислена в твоем варианте, в отличие от...
 

Цитата:
 Get-Volume | select -expand DriveLetter    
думал, что это то же самое

думать всегда не вредно и это, на самом деле, то же самое... вот только, это просто буква, а не путь.
 

Цитата:
чтобы пустые буквы не отбирать при селекте.

ничего не понял... что есть "пустые буквы" и зачем их отбирать?
 

Цитата:
Отобрать их можно иначе

тогда уж лучше так:

Код:
(Get-Volume).Where({$_.DriveLetter -and $_.drivetype -eq 'fixed'}).driveletter|%{$_ + ":\"}

 

Цитата:
А уже потом предъявлять претензии к тому, что не разжевали и не положили в рот.

Вот-вот, и соринки в чужом глазу тоже можно не обозначать. Да? Это в твой огород камень...  
 

Цитата:
Foreach {$_ + ':'}

О, ты уже сам поправился  
ну да ладно, пусть уже будет моя поправка тоже, раз накалякал...
 
 
 
Добавлено:
farag

Цитата:
Как же переделать опять?

а попробуй ту функцию, что я накропал

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:09 25-07-2018
LevT



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

Цитата:
 
дадад, назвал неправильно, но только на приводе dvd, например, нет никаких разделов и файловых систем тоже, он пуст, но буква есть и она будет перечислена в твоем варианте, в отличие от...
 

 
То, что я написал выше, верно для любых операционных систем.
А то, что пустые dvd приводы и картридеры остаются смонтированными под "буквой" - конкретно виндовая блажь
Типа "блондинкам так понятней, что у них есть такой привод".
 
Виндовое назначение букв это именно что монтирование томов

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 18:14 25-07-2018 | Исправлено: LevT, 18:25 25-07-2018
NIKZZZZ



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

Цитата:
То, что я написал выше, верно для любых операционных систем.  

Интересно, для каких конкретно?  

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:23 25-07-2018 | Исправлено: NIKZZZZ, 18:25 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
для никсов всё то же самое.
Я даже учёл экстенты LVM
 
И такое же исключение для ZFS (аналог MS Storage Spaces)
 

Цитата:
Не путай диски, разделы и тома.
 
Файловая система (с буквой или доступная только по ссылке) может быть сетевой или локальной (исключительно на томах).
Локальные тома могут состоять из одного или нескольких экстентов (разделов дисков).
Частый случай когда экстент один: потому тома путают с разделами.  
 
Всё это описывает "старомодную" систему хранения: в Storage Spaces иначе.  
 

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 18:27 25-07-2018 | Исправлено: LevT, 18:32 25-07-2018
YuS_2



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

Цитата:
То, что я написал выше, верно для любых операционных систем

врешь. Например экстенты - вовсе не разделы диска, а всего лишь, непрерывная область информации и файлы, например, могут состоять из нескольких экстентов. Кроме того, ещё существуют виртуальные файловые системы...
В общем, сам не путай, как говорится
 

Цитата:
конкретно виндовая блажь.


Цитата:
Виндовое назначение букв это именно что монтирование томов

Так блажь или монтирование?
Яснее выражайся.
Тем не менее, куда делись буквы от приводов с отсутствующими файловыми системами? Ты их уничтожил своим "конкретно виндовая блажь"? Так что ли?
Фильтровать их надо... см. выше.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:36 25-07-2018 | Исправлено: YuS_2, 18:38 25-07-2018
LevT



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

Цитата:
врешь. Например экстенты - вовсе не разделы диска, а всего лишь, непрерывная область информации и файлы, например, могут состоять из нескольких экстентов.
 

 
А вот ты не врёшь. Ты просто не знаешь, что "экстенты" - название структурной единицы не только внутренностей файловой системы, но её внешности.    
Место для NTFS или Ext4 может быть подготовлено именно что из экстентов - разделов диска.
Подготовлено LVM-ом, присущим той или иной оси или сторонним (виндовый изначально был Veritas)
 
 

Цитата:
 Кроме того, ещё существуют виртуальные файловые системы...  

 
Они в винде доступны либо по ссылке (несколько вариантов), либо по букве.
Если последнее - то смотри выше )))
 
На самом деле я допускаю, что результат зависит от уровня понимания этих материй писателем драйвера виртуальной ФС (монтирующего в винду том)
 
 
 

Цитата:
Виндовое назначение букв это именно что монтирование томов
Так блажь или монтирование?
Яснее выражайся.
Тем не менее, куда делись буквы от приводов с отсутствующими файловыми системами?  

 
 
А это воообще омерзительный баг и глюк - когда буквой в винде светится том RAW  
(т.е. на котором виндовый драйвер не умеет или разучился понимать ФС)

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 18:49 25-07-2018 | Исправлено: LevT, 18:58 25-07-2018
YuS_2



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

Цитата:
Ты просто не знаешь, что "экстенты" - название структурной единицы не только внутренностей файловой системы, но её внешности.

Мда уж, в век интернета и засилья гугля, выдавать такие перлы...
Ссылка с определением
Фантазировать, конечно, можно и даже для себя называть черное белым, тоже вполне, но общепринятые термины, лучше не перевирать.
 

Цитата:
Они в винде доступны либо по ссылке, либо по букве.

Т.е. это уже не твои слова:

Цитата:
Файловая система (с буквой или доступная только по ссылке) может быть сетевой или локальной (исключительно на томах).

Да?
 

Цитата:
это воообще омерзительный баг и глюк

Так:

Цитата:
виндовая блажь

или:

Цитата:
назначение букв это именно что монтирование томов

или все же:

Цитата:
омерзительный баг и глюк

?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:07 25-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Поищи ещё lvm+extent или vmfs+extent
 
 
Добавлено:
В винде lvm - это "динамические" диски.
 
Емнип, раньше и клиентская винда понимала "динамические" тома (собраные из кусков - разделов разных дисков)
Это могли убрать.
В связи с тем что сами динамические диски убирают даже из серверной винды, в пользу Storage Spaces
 
 
Добавлено:
YuS_2
 
Я смотрю, у нас тут спор двух чисто философов.
Ты настаиваешь, что "всё действительное разумно".
 
А я отказываю действительным багам и глюкам  в разумности - в пользу абстракций.
Описывающих существующую реальность образом, удобным для её понимания и воздействия на неё
 
 
Добавлено:
 
Буквы дисков вообще для блондинок)  
к тому же когда их становится много, от них только геморрой.
 
Предлагаю желающим (пишите в ПМ) сообща проверить такой пруф-концепт:
сделать папку %systemdrive%\Automount
и сюда монтировать все найденные тома, каждый в поддиректорию создаваемую по его метке
 
Надо будет выбрать способ сделать это можно раньше при загрузке  (и не исключаю, что пойти на какие-то компромиссы, если что-то системное будет продолжать настойчиво хотеть букву).
 
"А буков не надобно вообще"
Вернее, нехай пока буквы назначаются виндой по её разумению только тем томам, которые ей подсунули после загрузки.
Есть подозрение, что можно написать конфиг DSC который будет и это загонять под Automount.
 
 
Добавлено:
 
 
Вдруг озарило, для чего ещё могут быть нужны буквы  
для того, чтобы снизить вероятность появления длинных путей (врождённой виндовой болячки)
Но болячка эта, когда вылезла - лечится с успехом через subst или New-PSDrive
 

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 19:53 25-07-2018 | Исправлено: LevT, 21:32 25-07-2018
Smitis



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

Цитата:
Фантазировать, конечно, можно и даже для себя называть черное белым, тоже вполне, но общепринятые термины, лучше не перевирать

Советую всегда помнить, что Лёва демагог и вруль ещё тот! Ловили не раз.


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

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 22:06 25-07-2018
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда можно так:
Код:
[system.io.driveinfo]::GetDrives() | ? {$_.DriveType -eq 'Fixed'}

 
Добавлено:
А лучше enum и что бы два раза не вставать, namespace
Код:
using namespace system.io ; [driveinfo]::GetDrives() | ? {$_.DriveType -eq [drivetype]::Fixed}

 
перечисление drivetype:
Код:
[system.io.drivetype].GetEnumNames()

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 23:54 25-07-2018
Открыть новую тему     Написать ответ в эту тему

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