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

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

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



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

Цитата:
Пишет, что не знает чем открыть файл...

 
 укажи полный путь к своему некрошелу

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 00:00 19-01-2022
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT, с полным путем отрабатывает, но через неск. раз перестает (даже на одном и том же файле), и причина неизвестна, т.к. никаких ошибок не выводится. А через cmd ни разу не было сбоев.
Еще хотел спросить, что за ключ запуска -с? Это сокращение от -command?

Код:
powershell -windowstyle hidden -c (New-Object Media.SoundPlayer "b:\temp\1.wav").Play(); Start-Sleep -s 10

И без -с отрабатывает

Всего записей: 3050 | Зарегистр. 24-10-2002 | Отправлено: 12:37 19-01-2022
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN
 
Когда запускаешь powershell.exe, стартует виндовый процесс с движком, умеющим выполнять команды повершел. Если среди команд есть обращение к дотнету, то powershell лочится и не завершается, пока дотнетовский планировщик не освободит ресурсы (в твоём случае открытый на запись файл) и его поток не самоубьётся.
 
Ты торопишься кликнуть опять, запускаешь ещё один powershell.exe, тот исполняет предписаное твоей командой, т.е. пинает дотнет, который обламывается получить доступ к залоченному предыдущим повершелом файлу и не умеет пожаловаться по цепочке назад.
 
Когда ты запускаешь повершел через прослойку другого процесса (например cmd) - ты доверяешь виндовому планировщику определить когда какие процессы запускать. Он неплохо справляется с этой магией (в.т.ч. благодаря задержкам в коммуникации между разнородными движками: винда, дотнет, cmd, повершел), но ты теряешь контроль над прохождением своей задачи, которую бросил на исполнение этому зверинцу.
 
 
Вместо бессознательного использования дотнетовского и виндового планировщиков процессов и потоков, уместно юзать внутренюю сущность powershell v3 и выше - джобы: Start-Job/Receive-Job и управляющий ими модуль PSScheduledJob.  По крайней мере, собственный планировщик повершела умеет эти свои джобы разрулить и вернуть исчерпывающую инфу вызывающей стороне.
Особенно круто допилили планировщик джобов в pwsh: он умеет единообразно управлять планировщиками винды, макоси и линя.
   
 
(To Death_INN
Тебе лично не обязательно в это вникать, юзай первое что устраивает: я написал для здешних помогателей, желающих копнуть глубже).  
 
 

Цитата:
Еще хотел спросить, что за ключ запуска -с? Это сокращение от -command?

 
почитай вывод хелпа powershell.exe /?
 
Да, внутри повершела принципиально: параметры командлета можно сокращать, и у набора параметров командлета есть параметр по умолчанию.
Разработчики прикольнулись и продублировали эти принципы во внешнем интерфейсе самого powershell.exe или pwsh

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:24 19-01-2022 | Исправлено: LevT, 16:02 19-01-2022
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Правлю налету профиль так https://code.labstack.com/ypeQq-yJ  (строки 47-49)
устанавливаю переменные окружения или заменяю прежнюю установку  
 
Пришлось извратиться с добавлением комментария,  
  потому что если MatchInfo пустое (например профиль был пустым)  
 Add-Content сохряняет старые строки (а надо было отфильтровать -NotMatch)
 
Помогите убрать изврат (к тому же бажный т.к. неидемпотентный)
 

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 17:30 21-01-2022 | Исправлено: LevT, 11:08 22-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не понимаю, как правильно записать в файл значение

Цитата:
$Terminal.profiles.defaults.startingDirectory = $DesktopFolder

так, чтобы соблюсти все бэкслэши.

Цитата:
$DesktopFolder = C:\Users\\u0442\u0435\u0441\u0442\Desktop

Записывается в конфиг Windows Terminal  

Цитата:
C:\\Users\\\\u0442\\u0435\\u0441\\u0442\\Desktop

А надо

Цитата:
C:\\Users\\\u0442\u0435\u0441\u0442\\Desktop

 
https://pastebin.com/raw/735ZUUmX

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 19:33 23-01-2022
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
 
Зачем тебе бэкслеши в фс? Винда давно умеет прямые. См https://code.labstack.com/ypeQq-yJ

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 19:40 23-01-2022
farag



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

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 20:45 23-01-2022
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
О5 с json как с plain text кириллица в пути разве не работает?
а так:

Код:
$DesktopFolder = "C:\\Users\\`\u0442`\u0435`\u0441`\u0442\\Desktop"

проверял так:
Код:
$DesktopFolder = "C:\\Users\\`\u0442`\u0435`\u0441`\u0442\\Desktop"
"{`n""test"": ""$DesktopFolder""`n}" > C:\Users\тест\Desktop\test.json
Write-Warning -Message (gc C:\Users\тест\Desktop\test.json -raw | ConvertFrom-Json).Test

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 22:19 23-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Не работает. В такое нечто превращает сам Terminal, если находит кириллицу.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 22:50 23-01-2022
iNNOKENTIY21



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

Цитата:
Не работает.

проверял так: не работает? или чего то там у тебя не работает ?

Цитата:
сам Terminal, если находит кириллицу.

И пусть, тебе то это зачем? Пиши кирилицу, только как LevT советует в путях используй / или удваивай \\ а в ручную в уникод символы то зачем? сам Terminal пусть и умничает, раз умный такой

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 23:36 23-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Короче, https://datatracker.ietf.org/doc/html/rfc8259#section-8.1
 
Все заработало вот так: https://github.com/farag2/Utilities/blob/master/Windows%20Terminal/Settings.ps1
 
Всего навсего надо было в UTF-8 без BOM сохранять принудительно
 

Цитата:
 
Set-Content -Value (New-Object -TypeName System.Text.UTF8Encoding -ArgumentList $false).GetBytes($(Get-Content -Path $settings -Raw)) -Encoding Byte -Path $settings -Force
 

 
Добавлено
Я не знаю зачем...
https://github.com/farag2/Utilities/blob/master/Convert_Path_Into_Escape_Sequence.ps1

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 00:33 24-01-2022 | Исправлено: farag, 00:47 24-01-2022
LevT



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

Код:
[font='monospace']
#Requires -RunAsAdministrator
#...
#...
if (-not (Test-Path -Path "$env:ProgramFiles\PackageManagement\ProviderAssemblies\nuget\*\Microsoft.PackageManagement.NuGetProvider.dll"))
{
    Write-Verbose -Message "Installing NuGet" -Verbose
 
    Install-PackageProvider -Name NuGet -Force
}
[/font]

 
Неужели модер тутошний уже перестал считать нугет ересью?





Отдыхай, бестолочь.

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 14:07 24-01-2022 | Исправлено: KLASS, 14:25 24-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
А как поставишь что-то без Nuget? Или я что-то не понимаю в этой жизни?..

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 17:11 24-01-2022
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Терминал спокойно читает свой json с кириллицей. При сохранении из параметров и конвертнёт EscapeNonAscii.
Короче, нужен был конвертер?
 
кста в пошике 7 прикрутили это дело, там на гитхабе всем видно и им стыдно лепить такое же, что раньше в закрытом виде лепили

Код:
"{""test"": ""Тест""}" | ConvertTo-Json -EscapeHandling EscapeNonAscii

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

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 17:59 24-01-2022 | Исправлено: iNNOKENTIY21, 18:06 24-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Ну, я так и поступал, сохраняя в UTF-8. Конвертер нужен был для разминки ума)

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 21:54 24-01-2022
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Когда-то давно, кто-то из предыдущих коллег, написал прогу на VB, которая подключается к удаленному домену по LDAP и загружает из него пользователей.
Дальше, через PS идет подключение к чанге и импорт контактов.(но это уже лирика)
Суть в том, что на одном из доменов не проходит авторизация, а, поскольку, прога скомпилированная, то и возможности нормальной посмотреть что там за код нет.
 
Решил проверить и столкнулся с трудностями...
 
Между доменами нет доверия, все домены соединены по ВПН.
Пробовал в Powershell подключаться так:
$cred = Get-Credential -UserName REMOTEDOMAIN\User -Message 'Message'
Get-ADUser -Server 192.168.59.1 -SearchBase "OU=Users,DC=REMOTEDOMAIN,DC=LOCAL" -Properties * -Filter * -Credential $cred
 
Так подключиться не удалось, по этому решил спросить, как это сделать по LDAP.

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 16:56 25-01-2022 | Исправлено: newhk, 16:57 25-01-2022
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем.  
Как, к такому запросу,  
 
[ADSI]$OU = "LDAP://CN=Users,DC=DOMAIN,DC=LOCAL"
$OU.Children
 
прикрутить авторизацию?

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 11:40 26-01-2022 | Исправлено: newhk, 13:43 26-01-2022
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел такую конструкцию:

Код:
 
$path = 'LDAP://192.168.14.83:389/dc=domain,dc=ru'
$username = 'admin'
$password = 'password'
Try{
    $root = [adsi]::new($path,$username,$password)
    $searcher = [adsisearcher]$root
    $searcher.findone()
}
Catch{
    Write-Host "ERROR: $_"
}
 

Но она пригодна, только для локального домена.  
Для удаленного домена не подходит, выдает ошибку
 
ERROR: Исключение при вызове "FindOne" с "0" аргументами: "Неверное имя пользователя или пароль.
"
 
 
Добавлено:
Вопрос решился.
Проблема с конкретным удаленным КД

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 14:03 26-01-2022
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь смог распарсить выдачу от wsl --list --online?

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 21:08 26-01-2022
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Вопрос к знатокам...
 
Есть массив с DistinguishedName
надо в цикле разобрать строку на подстроки и сформировать из некоторых подстрок доменное имя.
Проблема в том, что не все строки разбираются одинаково и я не могу понять почему.
 
например:
Есть 2 строки:
1. 'CN=Users,DC=babaevsk,DC=local'
2. 'CN=Users,DC=RDNOVOSIB,DC=local'
 
1я строка разбирается нормально, а со 2й проблема
 
Разбираю так.

Код:
 
Comps = @(
    'CN=Users,DC=babaevsk,DC=local',
    'CN=Users,DC=RDNOVOSIB,DC=local'
)
 
foreach ($comp in $comps){
    $OU = $comp
    $dm = $OU.Split(',DC=')
    $dn = $dm[6] + '.' + $dm[10]
}
 
babaevsk.local
R.  
 

Почему R ?
 
Почему сплит разбивает некоторые строки не по ',DC='?
Практически все элементы из массива перебираются нормально, кроме четырех, один из них в примере с индексом [1]
В оригинальном массива 61 элемент, если что.
 
Может есть более элегантный способ образовать имя домена из DistinguishedName?
 
Добавлено:
В питоне это бы выглядело так:
 

Код:
 
comps = ['CN=Users,DC=babaevsk,DC=local', 'CN=Users,DC=RDNOVOSIB,DC=local']
 
for i in range(len(comps)):
    OU = comps[i]
    dm = OU.split(',DC=')
    #dn = dm[6] + '.' + dm[10]
    print(dm[1] + '.' + dm[2])
 
babaevsk.local
RDNOVOSIB.local
 

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 15:07 28-01-2022 | Исправлено: newhk, 16:06 28-01-2022
Открыть новую тему     Написать ответ в эту тему

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