Конвертация powershell в cmd (на самом деле нет)

Встала задача — запустить скрипт powershell из обычного *.cmd. Задача традиционно возникает вследствие отсутствия ассоциаций для файлов *.ps1, и не менее традиционно решается путем создания двух файлов — скрипта на повершелле, который делает то что нужно, и обычной цмдэшки, которая его стартует. Это жесть как неудобно. Однако нагуглилось еще одно решение — повершелльный скрипт можно закодировать в одну строку и подсунуть интерпретатору, что избавляет от необходимости создавать дополнительный файл. В результате со своей несложной по сути задачей я справился, и решил привести пример скрипта, который берет тело скрипта нужной нам функциональности и генерит cmd-файл готовый к запуску.

Внутри переменной $script — тело нужного скрипта,
переменная $out задает вид генерируемого cmd-файла,
в последней строке указываем путь и имя cmd-файла (да я ленивый быдлокодер, не вынес в переменную ))

powershell to cmd generator.ps1
 
$script = {
import-module activedirectory
$domain = Get-ADDomain
Write-Host "Последнее появление компьютера в домене"
Write-Host "======================================="
Write-Host "Поиск в домене: $($domain.Name).$($domain.ParentDomain)"
while($true)
      {
      $CompName = Read-Host -Prompt \'Введите короткое имя компьютера\'
      $CompName = $CompName -replace \'(^\s |\s $)\',\'\' -replace \'\s \',\' \'
      Get-ADComputer -Identity $CompName -Properties * | ft Name,LastLogonDate
      }
}
$command = $script.ToString()
$bytes = [System.Text.Encoding]::Unicode.GetBytes( $command )
$encodedCommand = [Convert]::ToBase64String( $bytes )
$out ="@echo off
powershell.exe -EncodedCommand $encodedCommand" 
$out | Out-File -Encoding ASCII -filepath c:\111.cmd

На выходе получаем:

111.cmd
 
  1. @echo off
  2. powershell.exe -EncodedCommand DQAKAA0ACgBpAG0AcABvAHIAdAAtAG0AbwBkAHUAbABlACAAYQBjAHQAaQB2AGUAZABpAHIAZQBjAHQAbwByAHkADQAKACQAZABvAG0AYQBpAG4AIAA9ACAARwBlAHQALQBBAEQARABvAG0AYQBpAG4ADQAKAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAB8EPgRBBDsENQQ0BD0ENQQ1BCAAPwQ BE8EMgQ7BDUEPQQ4BDUEIAA6BD4EPAQ/BEwETgRCBDUEQAQwBCAAMgQgADQEPgQ8BDUEPQQ1BCIADQAKAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9ACIADQAKAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAB8EPgQ4BEEEOgQgADIEIAA0BD4EPAQ1BD0ENQQ6ACAAJAAoACQAZABvAG0AYQBpAG4ALgBOAGEAbQBlACkALgAkACgAJABkAG8AbQBhAGkAbgAuAFAAYQByAGUAbgB0AEQAbwBtAGEAaQBuACkAIgANAAoADQAKAA0ACgB3AGgAaQBsAGUAKAAkAHQAcgB1AGUAKQANAAoACQB7AA0ACgAJACQAQwBvAG0AcABOAGEAbQBlACAAPQAgAFIAZQBhAGQALQBIAG8AcwB0ACAALQBQAHIAbwBtAHAAdAAgACcAEgQyBDUENAQ4BEIENQQgADoEPgRABD4EQgQ6BD4ENQQgADgEPARPBCAAOgQ BDwEPwRMBE4EQgQ1BEAEMAQnAA0ACgAJACQAQwBvAG0AcABOAGEAbQBlACAAPQAgACQAQwBvAG0AcABOAGEAbQBlACAALQByAGUAcABsAGEAYwBlACAAJwAoAF4AXABzACsAfABcAHMAKwAkACkAJwAsACcAJwAgAC0AcgBlAHAAbABhAGMAZQAgACcAXABzACsAJwAsACcAIAAnAA0ACgAJAEcAZQB0AC0AQQBEAEMAbwBtAHAAdQB0AGUAcgAgAC0ASQBkAGUAbgB0AGkAdAB5ACAAJABDAG8AbQBwAE4AYQBtAGUAIAAtAFAAcgBvAHAAZQByAHQAaQBlAHMAIAAqACAAfAAgAGYAdAAgAE4AYQBtAGUALABMAGEAcwB0AEwAbwBnAG8AbgBEAGEAdABlAA0ACgAJAH0ADQAKAA0ACgA=

Этот файлик можно уже смело давать неподготовленному юзеру, или пихать в политики.

Как очистить стену во вконтакте (версия 2017-го года)

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

  1. открыть свою стену,
  2. пролистать ее до самого конца,
  3. открыть консоль (в хроме: CTRL+SHIFT+I),
  4. вставить код в поле ввода и нажать Enter

 
 
(function () { 
  'use strict'; 
  if (!confirm('Удалить все записи со стены?')) return; 
  var deletePostLink = document.body.querySelectorAll('a.ui_actions_menu_item[onclick^="wall.deletePost"]'); 
  for (var i = 0; i < deletePostLink.length; i++) { 
    deletePostLink[i].click(); 
    } 
  alert(deletePostLink.length + ' posts deleted'); 
}());

[из техноблога] Использование снапшотов LVM как точки восстановления

Это вольный перевод найденного в инете комментария. В ubuntu синтаксис немного отличается в части указания названия томов, например не «lvrename lvm root root-old», а «lvrename /dev/lvm/root /dev/lvm/root-old». В остальном все соответствует.

Читать далее

[из техноблога] Тормозит Lightroom 5, неожиданное решение

Долгое время страдал от диких тормозов в лайтруме. Тормоза были при скроллинге фоток во вьювере, при их обработке — решительно во всех местах лайтрума, причем независимо от размера каталога

Читать далее

[из техноблога] Как избавиться от вируса EIMG001.exe и NsCpuCNMiner32.exe в большой сети

Если в вашей большой корпоративной сети обнаружилась движуха с сабжевым вирусом, который расползся по компам, проще всего заблокировать его запуск через GPO — это позволит прекратить или как минимум ограничить его распространение.

Читать далее

[из техноблога] Как перенести Linux с одного mdamd-raid на другой

 

Сегодня я бы хотел поговорить о такой серьезной с точки зрения надежности вещи, как линуксовый софтварный рейд. А, вернее, показать, как можно спасти систему, которая требует замены дисков, на которых она и была установлена. Я рассмотрю 2 дистрибутива линукса — CentOS 7 и Debian 8 — которые будут поставлены в идентичные исходные условия. Также, так как тема мне кажется достойной лишней наглядности, помимо традиционных скриншотов и текста, в конце я оставлю ссылки на видео, в которых полностью показана вся процедура: от момента установки исходной системы, до восстановления ее работоспособности на новых дисках.

Далее: http://obrivki.blogspot.ru/2017/02/linux-mdamd-raid.html

[из техноблога] Abaqus: Unable to validate FLEXnet server

На днях с коллегой  столкнулись с проблемой при установке abaqus, на которую потратили бессовестно много времени. Ошибка возникала при указании сервера лицензий (FlexLM) и в сокращенном виде звучала как «Unable to validate FLEXnet server»

Далее: http://obrivki.blogspot.ru/2017/01/abaqus-unable-to-validate-flexnet-server.html

[из техноблога] Как сменить заголовок (dash) стрима на сервисе restream.io с помощью скрипта.

Сервис restream.io позволяет не только разливать стримы на несколько стрим-сервисов, но и централизованно управлять заголовками (дашами, по терминологии твича) на таких сервисах как Twitch или Youtube…

Далее: http://obrivki.blogspot.ru/2016/10/dash-restreamio.html