Ответы пользователя по тегу PowerShell
  • Как закрепить ярлык на панели задач через gpo?

    @res2001
    Developer, ex-admin
    Ответ написан
    Комментировать
  • Как выполнить git clone если в адресе есть пробел?

    @res2001
    Developer, ex-admin
    Удвойте знак процента - процент служебный символ, его надо экранировать
    Ответ написан
    Комментировать
  • Как отключать дисплей через n минут (bat настройка) в домене и без него?

    @res2001
    Developer, ex-admin
    Просто настройте скринсейвер нормально.
    Это можно сделать через реестр для не входящих в домен. После правки реестра начнет работать после перезагрузки. Ключи реестра не скажу, но, думаю, их можно нагуглить без проблем.
    В доменных - наверняка должно быть в GPO.
    Ответ написан
  • Можно ли командой удалить все метаданные у файлов?

    @res2001
    Developer, ex-admin
    Видимо имеются ввиду какие-то медиа файлы (картинки, видео, ...) и метаданные, которые хранятся в самом файле.
    Такие метаданные можно удалить, есть соответствующие утилиты, гуглите. На вскидку ничего не подскажу, т.к. сейчас далек от этого, но в свое время сталкивался с подобным вопросом и решал его вполне успешно.
    Ответ написан
    Комментировать
  • Как перекладывать файлы по разным маршрутам?

    @res2001
    Developer, ex-admin
    Аналогичные решения на самописных скриптах регулярно встречал в enterprise среде, да и сам использовал. Потому что гибко, можно заточить как хочется, со всеми вывертами enterprise окружения. Никакой готовый софт обычно не в состоянии обеспечить все потребности на 100%, поэтому используют самописные скрипты.
    На батниках все ваши хотелки можно реализовать, используя дополнительные инструменты командной строки. Если плохо знаете язык, то можете использовать любой известный скриптовый язык или подучить cmd, там не весть какая премудрость. В винде кроме cmd и posh из коробки есть еще VBScript и JScript их то же можно использовать. Хорошо для подобных задач подходит python, но его придется ставить отдельно, часто это бывает не приемлемо.
    Ответ написан
    Комментировать
  • Альтернатива sudo/su для Windows?

    @res2001
    Developer, ex-admin
    Параметр в реестре:
    reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

    отключает действие UAC для процессов запускаемых удаленно. Устанавливать его надо на ПК, на котором будут удаленно запускаться приложения. После установки требуется перезагрузка.
    Когда он установлен и вы запускаете что-то удаленно с правами администратора удаленного компьютера, то программа запускается с реальными администраторскими правами, без фильтра UAC.
    Например с помощью того же psexec (или wmic) можно будет запускать удаленно приложения.
    Не уверен, что это сработает в случае с ssh и telnet, т.к. сервер службы работает на удаленном компьютере.
    Ответ написан
  • Скрипт копирования папок?

    @res2001
    Developer, ex-admin
    Ввод можно сделать с помощью конструкции:
    set /p val="Как назвать новую папку?: "
    В переменной val будет введенная пользователем строка.
    Ответ написан
    2 комментария
  • Если PowerShell разработали как современную замену CMD, почему в меню восстановления Windows ещё вызывается CMD?

    @res2001
    Developer, ex-admin
    Видимо потому что powershell использует .Net, а это вещь довольно тяжелая и тянуть ее в систему восстановления смысла нет.
    Ответ написан
    Комментировать
  • Как экранировать символы перенаправления ввода/вывода в cmd?

    @res2001
    Developer, ex-admin
    Никак вы не экранируете символы, которые находятся в файле.
    Вместо этого возьмите утилиту типа sed, которая сама вытащит то что вам нужно и уже ее вывод можете дальше обрабатывать батником. Правда подходящих утилит по умолчанию в винде нет.
    Другой вариант использовать другой язык программирования, у которого по легче со спец.символами. Например из коробки в винде еще есть powershell, jscript, vbscript
    Ответ написан
    1 комментарий
  • Как перезапустить службу от имени администратора?

    @res2001
    Developer, ex-admin
    Простого способа повышения привилегий нет.
    Есть варианты из разряда "трюков", в которых используется внедренный в батник скрипт на vbs/js: https://safezone.cc/threads/kak-zapustit-programmu...
    Ответ написан
    Комментировать
  • Как с помощью скрипта изменить программу при запуске терминальной сессии?

    @res2001
    Developer, ex-admin
    Добавьте запуск программы в автозапуск пользователя.
    Если запускать нужно только в терминальной сессии, то запуск программы оформить в батнике, где предварительно определять терминальная сессия активна или локальная. Информацию по сессии можно получить с помощью
    query session /?
    Ответ написан
  • Как автоматизировать подключение к VPN?

    @res2001
    Developer, ex-admin
    Видимо используете микрософтовские стандартные варианты ВПН?
    У микрософта есть такая штука CMAK помогает созадавать установщики ВПН соединения.
    Так же создать ВПН соединение можно с помощью powershell скрипта используя апплет Add-VpnConnection.
    Тут и тут пишут, что можно и просто в cmd (т.е. батником) создавать соединения.
    Подключить ВПН соединение с помощью rasdial, запустить RDP - mstsc.

    Если использовать openvpn, то можно уйти от паролей и сделать ВПН на ключах. Распространять уже преднастроенную сборку openvpn. Клиентские ключи можно регулярно банить и генерить новые. Новые выкладывать на сайте.
    Логин/пароль на винду лучше не прописывать в скрипте а публиковать на сайте и так же регулярно менять - пусть пользователь вводит их ручками. На всякий случай - сохранить логин/пароль для RDP соединения можно с помощью утилиты cmdkey.
    Ответ написан
    6 комментариев
  • Как оставить только текст внутри нужных полей?

    @res2001
    Developer, ex-admin
    Батник:
    @echo off
    SetLocal EnableDelayedExpansion
    
    set "filename=1.txt"
    set "name=" & set "surname=" & set "pass=" & set "api="
    for /f "tokens=2,3 delims=(;', " %%a in ('findstr "define" %filename%') do (
    	if /i "%%a" equ "name" (
    		set "name=%%b"
    	) else if /i "%%a" equ "surname" (
    		set "surname=%%b"
    	) else if /i "%%a" equ "password" (
    		set "pass=%%b"
    	) else if /i "%%a" equ "api" (
    		set "api=%%b"
    	) 
    	if defined name if defined surname if defined pass if defined api (
    		echo.!name!;!surname!;!password!;!api!
    		set "name=" & set "surname=" & set "pass=" & set "api="
    	)
    )

    Предполагается что записи name, surname, password, api будут сгруппированы именно так как в примере, т.е. не будут перемешаны записи разных пользователей.
    В таком варианте возможны проблемы, если в файле будут данные, содержащие спец.символы cmd: !%&<>| ...
    Ответ написан
    Комментировать
  • Как копировать файлы по маске со всей файловой структурой?

    @res2001
    Developer, ex-admin
    xcopy
    Ответ написан
    Комментировать
  • Powershell+Планировщик заданий+Excel. Скрипт не работает, не запускается Excel при запуске скрипта из планировщика. Как исправить?

    @res2001
    Developer, ex-admin
    Пользователь из-под которого запускается задание настраивается в планировщике в настройках задания.
    Обратите внимание на то, что при запуске из планировщика, обычно, текущим каталогом является c:\windows\system32, а не каталог со скриптом. Часто ошибки при запуске из планировщика связаны именно с тем, что скрипт рассчитывает на то что текущий каталог - это каталог где лежит сам скрипт.
    Ответ написан
    Комментировать
  • Скрипт для удаления файлов до определенного часа в Windows?

    @res2001
    Developer, ex-admin
    Вчера отвечал на похожий вопрос, но у вас немного сложнее.
    С помощью командного файла (cmd) можно это сделать примерно следующим образом:
    Получить список файлов отсортированных в обратном порядке по времени модификации файла можно с помощью команды:
    dir /n /-c /a-d /o-d /tw *.*
    Вычислить время на час назад можно используя встроенную переменную %TIME%, которая возвращает текущее время. Переменная %DATE% - возвращает текущую дату. Не забудьте вариант смены суток. cmd не умеет работать с датой и временем, всю арифметику с датой/временем придется писать самому (выделять из %TIME% минуты и часы и производить с ними арифметические операции). Тут надо еще учесть, что числа, начинающиеся на 0 - для cmd восьмеричные и то что формат данных в %DATE% и %TIME% (и в выводе dir) зависит от установок текущей локали ОС.
    В выводе dir будет время и дата, сравниваете ее с текущей датой и вычисленным временем и если надо удаляете файл. Т.к. файлы будут отсортированы в обратном порядке по дате/времени, то после первого файла не удовлетворяющего условию можно завершать обработку.
    В помощь:
    dir /?
    for /? (ваш вариант for /f)
    set /? (для арифметики: set /a)
    Выделение подстроки из переменной описано в set /?

    В целом все можно реализовать, но вычисление даты/времени на час назад может стать не тривиальной задачей, если учитывать переход суток (а так же переход даты - дней, месяцев и годов).
    Так что, я думаю, что лучше предпочесть вариант на PoSh.
    Ответ написан
    Комментировать
  • Каким наиболее простым способом можно заменить запуск внешней команды в cmd на GUI программу с Drag & Drop?

    @res2001
    Developer, ex-admin
    Если вам нужно сделать ввод имен файлов, то это можно сделать непосредственно в командном файле.
    Команда
    set /p filename="Enter file name: "
    Выведет запрос на ввод имени файла. Можно вводить руками, а можно перетащить из проводника или с раб.стола любой файл. Полное имя файла будет в переменной filename:
    echo.%filename%
    Ответ написан
    Комментировать
  • Как отправить mail из скрипта cmd/powershell?

    @res2001
    Developer, ex-admin
    Из cmd встроенными средствами отправить почту нельзя.
    Вариант с телнетом работает, но родной виндовый телнет клиент (который надо еще устанавливать из компонентов) не поддерживает какой-либо автоматизации. Вручную с его помощью отправить письмо можно, автоматически - нет.
    Можно найти любой другой телнет клиент, которым можно управлять с помощью параметров командной строки или еще другим способом, либо найти консольный почтовый клиент, которые то же имеются. Но все это сторонние средства, которых нет в составе винды.
    Ответ написан
  • КАК записать диски с помощью CMD, PowerShell или Скрипта vbs?

    @res2001
    Developer, ex-admin
    40 приводов? подключены к 40 компам? Это шутка?
    Давно уже не видел бэкапа на CD/DVD.
    Лучше заведите себе внешний жесткий диск и бэкапте туда.

    На счет записи дисков из командной строки - в Вин 10 есть встроенная утилита isoburn, но она пишет только iso образы, которые надо еще создать в вашем случае, а так же в конце записи она открывает окно с сообщением о результате записи.
    Можете воспользоваться cdburnerxp, в его составе есть утилита командной строки для записи дисков. Он много чего умеет. Есть и другие утилиты для этих целей, если cdburnerxp не подойдет.
    Ответ написан
  • Открытие c$ компа в сети от имени другого пользователя?

    @res2001
    Developer, ex-admin
    Вообще explorer должен запрашивать логин/пароль при подключении к удаленному ресурсу. Не запрашивает он их в том случае, если смог подключиться к ресурсу с текущими правами.
    Но можно заставить его использовать не текущие учетные данные - с помощью менеджера паролей. В менеджере паролей нужно создать записи для доступа к удаленным компам. Тогда при обычном переходе к удаленному ресурсу будут использоваться сохраненные учетные данные. Для работы с менеджером паролей есть утилита ком.строки (cmdkey) - можно автоматизировать процесс создания учетных данных.
    При большом количестве удаленных компов это не удобно.

    Лично я пользовался Farом, запущенным с правами администратора удаленных раб.станций (на моей машине у этого пользователя не было админских прав). Запустить explorer под другим пользователем, не выходя из своего сеанса, по моему, нельзя. Explorer как файловый менеджер - не лучший выбор, имхо. Я давно уже юзаю Far и он у меня всегда установлен.
    Ответ написан
    1 комментарий