Я: Эй, яндекс, "powershell delete \r\n" Яндекс: Изи, чувак, иди сюда: https://stackoverflow.com/a/45044873 SO: (Get-Content file.txt -Raw).replace(",`r`n", [System.Environment]::NewLine) | Set-Content file2.txt Л - лаконичность.
Казалось-бы — нет, никак. Но попитка не пытка: Powershell + Hypersnap + OCR + WinHex.
Get-Content -Encoding Byte .\claims-web.zip |Format Hex >.\claims-web.zip.txt; Get-Content .\claims-web.zip.txt |Out-Host -Paging
2-х мегабайтный архив превратился в 22-х мегабайтный текстовый дамп и овер чем дохуя скриншотов, в связи с чем
имею спросить вопрос — есть чо, что делает OCR с точностью 146 процентов и более? Файнридеры — таки лагают и ошибаются даже на четких скринах с цифрами и 6-ю буквами (
ЗЫЖ таково секеса у меня еще не было — 3500 раз нажать пробел и хоткей для скриншота )
$(Get-Date).ToShortTimeString() | %{ $(New-Object -ComObject "SAPI.SpVoice").speak($_) }
... вообще павершелл не считается языком программирования, в отличии от перла
Выпал в осадок. Не буду показывать пальцем, думаю исправится.
Но вот такая каша в головах и создаёт проблему неприятия.
Кстати, имхо, вопрос "чем PowerShell лучше cmd" примерно эквивалентен "чем ipython лучше cmd".
Получаешь список объектов сетевых интерфейсов в нормальном виде, а не просто как текст и говно. И дальше чето делаешь там с ними. Там вся инфа о них.
Но говноеды привыкли есть говно, им подавай ipconfig через cmd.exe
и это, как дефолтным шеллом powershell сделать?
Логичнее бы выглядела интеграция powershell'а и systemd.
Надо будет повнимательноее на powershell этот посмотреть.
$logs = "C:\inetpub\wwwroot\logs"
New-Item -type directory -path $logs
$acl = Get-Acl $logs
$AccessRule = New-Object system.security.accesscontrol.filesystemaccessrule("IIS_IUSRS","Write","Allow")
$acl.SetAccessRule($AccessRule)
Set-Acl $logs $acl
есть такая пизда, называется реестр. в нем есть ключ с бинарными данными, это где данные 00 01 с4 а0 и т д.
и он сука длинный.
есть у меня блядский образец этого гавна.
смысл в том, чтобы запросить значение ключа и сравнить с бляцким образцом.
но как эту пизду оформить в коде? если хуяришь просто:
$q = 01, 03, c8
эта пизда ругается, что я вдруг тестовые данные заябываю в массив, поэтому его надо в кавычки.
если я эту пизду перевожу в тип byte, то эта пизда хочет, чтобы я вводил в нее циферки такого рода 0x80 0xc5 и т д.
я не хочу так вводить, потому что долго. а когда тестовую переменную создавал, то оно мне выводит конвертированные в десятичную хуйню.
при этом, когда я запрашию этот ебаный ключ в реестре, то в переменной образуется хуйня правильно выглядящая.
вобщем я заебался. пидары пидары ебаные пидары долбитесь в хвост гандонами изобранными измазайтесь гавном твари
1. сраный модуль, который через жопу добавляется в ISE
2. ебуче-дремучие командлеты, которые хуй знает с какой ебанутой логикой сделаны.
я все понял.
когда я работал в пошиком, то я начинал с эксчейнджа. тогда я думал что пошик гавно.
щас я много работал не с экчейнджем. и я считаю, что пошик норм.
вывод, эксчейндж гавно.
social.technet.microsoft.com
Причем тихо валится, без единой ошибки.
И внезапно:
Beginning in Windows PowerShell 3.0, modules are imported automatically when any cmdlet or function in the module is used in a command. This feature works on any module in a directory that this included in the value of the PSModulePath environment variable.
technet.microsoft.com
Так что сбриваем нахрен импорт.
(gwmi win32_computersystem).partofdomain
How to find if the local computer is in a domain?
stackoverflow.com
stackoverflow.com
#PowerShell 3+
# This is an automatic variable set to the current file's/module's directory
$PSScriptRoot
что та кои-8 значит?
1) Открываем PowerShell
2) Набиваем (Get-AppxPackage -User <user>).Name, где <user> — имя вашей учётной записи
3) Выбираем что хотим удалить и делаем, например:
Get-AppxPackage -Name "Microsoft.BingSports" | Remove-AppxPackage
4) PROFIT
Если нужно получить более подробную информацию о приложении, делаем
Вообще PowerShell замечательная штука. Работают основные команды linux и dos. ls, cat, | и даже справка по man
Все команды возвращают объекты .NET, поэтому это больше похоже на интерпретатор Python, чем на bash
совсем забыл основы.
неким образом, я получаю несколько переменных. из различных командлетов, даже из различных модулей, какие-то через обращение к wmi.
и вот теперь, хотя эти переменные занести в файлик в виде:
var1;var2;var3;var4 (типа имя хоста; кол-во виртуалок; кол-во работающих виртуалок;версия и редаксия оси)
ну и таких записей много.
как это сделать?
out-file не хочет работать с этим.
> тоже не работает.даже если в файл заносится — то после каждой переменной — знак переноса строки. жопа жопа жопа
проглядел способ нормально переопределять функцию, чтоб новая вызывала старую $oc = Get-Command 'Write-Host' -Module 'Microsoft.PowerShell.Utility' & $oc @PSBoundParameters #либо & $oc @args
ебаные криволапые пидары.
нашёл изумительную фичу powershell 2.0 (эта версия по умолчанию в семёрке): при выводе данных обычным способом (хз, как называется, когда например просто переменную или имя функции укажешь, а оно в консоль пишет) текст форматируется по ширине консоли. Так что вот такая команда: powershell -c "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"" > x.txt сохранит в файл x.txt вот такое: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxx В связи с этим объединённый bat+powershell скрипт: @powershell -command "(Get-Content \"%~0\") -replace '@powershell','#' | Write-Host" | powershell -c - & goto :eof "put your powershell code here"
Get-WinEvent -FilterHashtable @{logname='System'; id=6005,6006,6008} -ComputerName "WSGM08" -ErrorAction SilentlyContinue | Sort-Object -Property TimeCreated
батник запускает powershell скрипт из себя. простая штука, а доходил я до неё несколько дней. @powershell -command "(Get-Content \"%0\") -replace \"@powershell\",\"#\"" | powershell -c - & goto :eof Write-Host "put your powershell code here"
Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "blablabla" }
blog.jourdant.me
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential("login", "pass")
$webclient.DownloadFile($artifacts_url, $artifacts_archive)
$gpo = Get-GPO -Name testdenied
$adgpo = [ADSI]"LDAP://CN=`{$($gpo.Id.guid)`},CN=Policies,CN=System,DC=Contoso,DC=Com"
$rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
[System.Security.Principal.NTAccount]"Contoso\Kazun",
"ExtendedRight",
"Deny",
[Guid]"edacfd8f-ffb3-11d1-b41d-00a0c968f939"
)
$acl = $adgpo.ObjectSecurity
$acl.AddAccessRule($rule)
$adgpo.CommitChanges()
-------------------------
вот вопрос в том, что в строке [System.Security.Principal.NTAccount]"Contoso\Kazun" определен класс объекта для пользователей, а какой тип объекта использовать, если я хочу добавить компьютерный аккаунт?????
хочу взять около 10 мейлбоксов и посмотреть их общий размер.
то есть к переменной прибавлять значение $mailbox.TotalItemSize
вот какой должет быть тип переменной? или есть другие способы получить сумму? типа $allMailbox.sum(TotalItemSize)
например $var = get-различныеобъекты -filter (тут какой то фильтр)
вот в эту $var попадают разные объекты, проходящие фильт, например, юзеры без заполненного мыла, компы в каком-то сайте.
вот есть эта $var и есть еще объект, например, $obj.
как проверить, этот $obj находится в $var?
помогает переустановка клиента. полная. с удалением CCM ccmcache и ccmsetup.
вобщем, решил замутить скрипт. которые берет коллекцию с неправильными компами, удаляет агента, ставит агента.
но опять же, не проканывает просто командлет переустановки, нужно чистить каталоги.
но,
1. проблема. это то, что на компах не настроен winrm.
2. psexec не всегда хочет выполняться.
вобщем, геморой(
лень его решать
не работает для отдельного командлета, в качестве его параметра.
если установить системный параметр $ErrorActionPreference в нужное значение — то работает. что не так делаю?
если надо в переменную засунуть только значение объекта, то можно сделать так:
$var = get-adcomputer COMPUTER -Property * | select -expand LastLogonData