Ответы пользователя по тегу PowerShell
  • Как сделать массовую рассылку пользователям на удаленные компьютеры?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Если кратко - для простой отправки отправки сообщений пользователям надо использовать msg ( тут я согласен с комментарием, который MaxKozlov оставил под вопросом ). Не усложняйте себе жизнь

    Однако если хотите усложнять - надо отправлять сообщение в пользовательскую сессию, из вашей (которую вы создали подключившись удаленно) или из системной сессии
    Есть два способа: используя psexec (или другой инструмент позволяющий переключаться на сессию) или используя запланированную задачу, запускаемую от имени залогиненного пользователя
    Решая подобную задачу, я доставлял сообщение в специальный файл на пк, который раз в 5 минут проверялся простенькой таской (созданной автоматически на всех ПК моего домена) и, если файл был не пустой - сообщение из текстового файла выводилось и файл очищался.
    Для использования psexec и прочих ухищрений с переключением сессий - изучите вот этот ответ stackoverflow
    https://stackoverflow.com/questions/61971517/power...
    Ответ написан
  • Замена существующего содержимого в файле?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    замена вашего однострочника, с соблюдением требований многократной замены
    (get-content file.txt -raw) -replace "1","2"  -replace "3","4"  -replace "5","6" | out-file file.txt


    или, если вы не готовы прописывать все замены в командной строке а хотите, как тут посоветовали, читать из csv файла с заголовками oldword и newword. Будет как то так, но код не тестировал, написал по памяти
    $pairs = import-csv csvfile.txt
    $filecontent =  get-content file.txt -raw
    foreach ($pair in $pairs) { $filecontent =$filecontent -replace $pair.oldword,$pair.newword }
    set-content file.txt -value $filecontent


    Кстати, когда задаете вопрос - лучше пользоваться полными наименованиями операций и функций
    P.S. меня в комментариях поправили - нашли ошибку. Чтобы код был хоть как-то работоспособен я ошибку исправил в ответе. Спасибо! )
    Дополнительно нашел свою ошибку в комментарии к коду автора вопроса. И исправил ее у себя )
    get-content возвращает массив строк, поэтому % (foreach) в вопросе имеет смысл - my bad
    мой "неэффективный" но работающий скрипт теперь считывает весь файл в одну строку
    Ответ написан
  • Как найти строки в логах с помощью powershell?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    $x=gc *.html
    for ($i=0; $i -le $x.Length; $i++) {
        if ((ConvertFrom-Csv -Delimiter "," -Header "a","b","c","d","e","f" -inputobject $x[$i]).b -eq "38" -and (ConvertFrom-Csv -Delimiter "," -Header "a","b","c","d","e","f" -inputobject $x[$i+1]).b -eq "156" ) {
            echo $x[$i] $x[$i+1]
        }
    }

    самое тупое что в голову пришло. оно будет тормозить ибо создаст объект со ВСЕМИ строками из всех файлов и пройдется по ним последовательно
    а да, возможно надо будет делать парсинг html вытаскивая оттуда только текстовый контент
    Ответ написан
    4 комментария
  • Как открыть "чистую" консоль powershell?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    не совсем "remove" но позволяет так же добиться чистого экрана при старте posh
    1.
    запускаем powershell и смотрим значение переменной $PROFILE - выдаст где хранится автозагружаемый профиль Posh для вашего пользователя
    2.
    • если файл есть - дописываем туда последней строкой Clear-Host
    • если его нет - создаем его по нужному пути и пишем туда то же самое

    Сохраняем
    3. теперь при запуске powershell под вашей учетной записью будет всегда сначала выполняться этот набор команд.
    Кстати туда можно записать много полезных алиасов, прописывать нужные пути (которые требуются только в среде powershell) - не переопределяя их на уровне системы, разные перемененные окружения и тд и тп, благо это обычный powershell скрипт.
    В общем аналог bashrc
    Ответ написан
  • Как осуществить поиск и копирование блока строк по ключевому слову в *.txt?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Powershell сейчас не под рукой но выглядеть скрипт должен как то так:
    $file = 'ваш файл'
    $newfile = 'другой файл'
    $keyword = 'parametr'
    (get-content $file -raw) -split "\n\n" | foreach {
        $firststring = $_ -split '\n' | select -first 1
        if $firststring -like $keyword { add-content $newfile $_}
    }

    здесь точно напутано с экранированием спец. символов, а так же не сделаны некоторые обработки для отсутствующих файлов и много чего еще. Дорабатывайте на здровье :D
    Ответ написан
    1 комментарий
  • С чем связана ошибка?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    C:\Users\AppData\Roaming\npm\gulp.ps1
    Вы выполняете не скрипт cmd а скрипт powershell.
    гуглите powershell execution policy в сочетание с вашей ошибкой, чтобы решить проблему.
    Ответ написан
    1 комментарий
  • Как вызвать jscript из POWERSHELL?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    start-process "cscript.exe" -argumentlist "script.js" ?
    Ответ написан
  • Как заставить выводить результат powershell linux?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    для справки :
    >Get-Alias echo
    Alias           echo -> Write-Output

    Так что, думаю, вашу проблему решит что-то вроде
    echo (Get-VMHost).name
    Ответ написан
    5 комментариев
  • Как копировать файлы по маске со всей файловой структурой?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    foreach {$file = $_; $destination = (join-path $BackupFolder $(Split-Path $file.Directory -NoQualifier)); if (!(test-path $destination)) {New-Item -itemtype Directory -Path $destination}; Copy-Item $file.fullname -Destination $destination -Container}
    Ответ написан
    Комментировать
  • Как из одного массива получить два значения в разные переменные через PowerShell?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    $a = $transformConfig.source

    $a = $transformConfig | select source

    и вообще если у вас один цикл то зачем плодить переменную $transformconfig(s) ?

    $componentSelect.transform_config| foreach {$a = $_.source; $b=$_.target}
    Ответ написан
    1 комментарий
  • Как подставить значения из JSON-файла в PowerShell?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Подозреваю что дело в двух вещах:
    1. использование переменной окружения %inetpub_path% в скрипте powershell. Никогда не задумывался будет ли это работать, но в Posh переменные окружения используются так: $ENV:HOMEPATH вместо %HOMEPATH%
    В скриптах cmd, напоминаю, так же необходимо удвоение знаков %
    2. использование переменных в запуске консольной программы напрямую
    Здесь попробуйте использовать start-process "xcopy.exe" -argumentlist "все необходимые вам аргументы с переменными"
    Или же Invoke-Expression -command "xcopy.exe все необходимые вам аргументы с переменными"
    Ответ написан
    1 комментарий
  • Скрипт мониторинга связи с сетью?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Предупреждаю, следующи скрипт написан ради шутки, но делает то чего вы хотите :D
    Открываете powershell и запускаете:
    for ($true) {sleep 20; if (!(Test-Connection 'comp1' -Quiet -Count 1) -and !(Test-Connection 'comp2' -Quiet -Count 1)) {sc ($env:TEMP+'\warning.txt') -Value 'Wake up, Neo. You obosralsya';start 'notepad' -argumentlist ($env:
    TEMP+'\warning.txt')}}
    Ответ написан
    Комментировать
  • DHCP+Powershell. Какие права дать пользователю для получения информации о DHCP через Powershell?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Возможно, путь в статье поможет и вам.
    https://secureidentity.se/delegate-dhcp-admins-in-...
    Только читайте внимательнее: автор решает другую задачу: как дать административный доступ к DHCP пользователю без админских прав. Про доступ на чтение - у него в конце одна строка "сделайте по аналогии" :D
    Заодно там есть кратенько почему эти две дефолтные группы "не работают"

    P.S. По хорошему, вам бы не заморачиваться всем этим, а просто раз в минут 5 выгружать необходимую статистику в файл, а пользователю работать с файлом, без непосредственной работы со службами. Но все зависит от того какую задачу вы на самом деле решаете. В вопросе у вас сформулирована проблема с уже выбранным решением, с которой поможет разобраться приведенная статья, но, возможно, не стоит настолько усложнять схему и выдавать права там где они реально не нужны
    Ответ написан
    Комментировать
  • Почему не пускает?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Первопричина на нормально работающем компе без уже внесенных кривыми руками настроек - файрвол, как уже подсказал azarij
    Не помогло - идем дальше:
    1. не разрешается имя компьютера - пробуем ввести в формате IP адреса или полного доменного имени типа computername.domain.name вместо computername
    2. Не подходит имя пользователя - пробуем ввести в формате remotecomputername\username
    3. Отключены службы удаленного доступа к RPC - решаем эту проблему. (вот тут статейка, какие сервисы проверять https://social.technet.microsoft.com/Forums/window...
    Ответ написан
    Комментировать
  • Как произвести массовую смену паролей AD?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    get-help get-content -examples
    $users = get-content file1.txt
    считывает построчно ваш файл в переменную $users
    каждую строку из файла можно адресовать по индексу в цикле for
    get-help about_for -examples
    for ($counter = 0; $counter -le $users.length;$counter +=1;) {write-host $users[$counter] }
    Так как у вас файлы c одинаковым количеством строк то $passwords[$counter] даст соответствующий пароль внутри цикла, если считать файл паролей в переменную $passwords
    Ответ написан
    Комментировать
  • Скрипт powershell работает или завис?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    в сторону дебаггинга и, для этого, разделения кода на шаги.
    Отдебажите - можно будет в однострочник склеивать.
    Например, можно вынести в отдельные шаги get-mailbox с ключом -verbose
    можно добавить проверку get-mailboxfolderpermission
    Ну и добавить опять же verbose к add-mailboxfolderpermission
    Ну и можно для дебага писать какую конкретно идентити сейчас будем менять, Write-Host $Mailbox.Name
    Ответ написан
    1 комментарий
  • Powershell работа с Переменными?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    if (!(Test-NetConnection сервер -Port порт -InformationLevel Quiet).TcpTestSucceeded) 
    {
    ваш код
    
    
    }
    Ответ написан
    3 комментария
  • Как возобновить выполнение скрипта PowerShell после перезагрузки компьютера?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    как альтернативный вариант - изучить powershell desired state configuration и, конфигурить машину www.powershellgallery.com/packages/xHyper-V/3.5.0.0 (есть и другие модули, надо раскапывать)
    Однако обратите внимание на ответ Ethril - возможно оно пойдёт легче
    Ответ написан
    Комментировать
  • Powershell, стоит ли изучать на старте?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    не путайте мягкое с тёплым.
    PoSH - инструмент для решения задач в помощь системному администратору.
    Один из.

    Где-то будет эффективнее решить задачу "мышкой"
    В каких-то случаях проще использовать специально разработанные программные продукты для решения задачи.

    а PoSh - это как некая альтернатива. Можно на него посматривать и проверять
    "а можно ли быстрее и эффективнее решить эту задачу скриптом на PowerShell ?" или
    "А как вот эта задача, которую я накликал мышкой в интерфейсе сервера решилась бы с помощью скриптов(не обязательно PoSh)?"
    А дальше пойдет по накатанной : типовые задачи по автоматизации будут легче решаться(скриптами, если пару раз сделали), нетиповые задачи (при накоплении опыта) будет интереснее делать скриптами и тд и тп.
    B не надо относиться к Powershell как к "о, щас я его изучу и буду всё уметь" - не изучите всё :D
    Ответ написан
    1 комментарий
  • Мониторинг каталога и удаление файлов с уведомлением по почте, как реализовать?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    если общий ресурс находится на ОС windows server (точно сейчас скажу за 2008 и выше) то воспользуйтесь возможностями управлялки : включите скрининг.
    уведомление, емнип, там тоже настраиваются.

    Если на клиентской ОС - https://gallery.technet.microsoft.com/scriptcenter...
    В блок "created" (и на всякий случай в changed, потому что вариант с созданием .txt файла а потом смены ему разрешения никто не отменял) делаете обработку по типам файлов.
    Ну и отсылку сообщения можно реализовать через send-mailmessage
    Если слабо знакомы с powershell то в командной строке пишете get-help about_switch -examples для действий в зависимости от расширения файла.
    Так же get-help send-mailmessage -examples для настройки отсылки сообщения.
    Ответ написан
    2 комментария