Showing posts with label powershell. Show all posts
Showing posts with label powershell. Show all posts

Tuesday, 12 November 2024

Детектим виртуалку #2.

Привіт, привіт.

Не так давно я намагався впевнетись що ВМ сховати від зловреда майже неможливо. Тому вирішив ще перевірити як з цим справи в HyperV. На поміч мені став ChatGPT, бо в мене не було часу самому рискати по мережі, але результат очікуваний - для експериментів а якості пісочниці HyperV точно не годиться. Дивіться результати далі.

Щоб визначити, чи машина є віртуальною, будь хто може скористатися командою PowerShell, яка перевіряє наявність ознак віртуалізації. Один з найпростіших способів - це скористатися `Get-WmiObject` або `Get-CimInstance` для отримання інформації про BIOS чи апаратне забезпечення. Якщо сервер є віртуальним, у властивостях часто можна побачити такі рядки, як "Microsoft Corporation" для Hyper-V або інші специфічні ознаки.


Ось приклади команд, які можна виконати в PowerShell:

1. Використання класу Win32_BIOS

(Get-WmiObject -Class Win32_BIOS).SerialNumber

Значення `SerialNumber` часто вказує на віртуальну платформу. Наприклад, для Hyper-V він може починатися з `Microsoft Corporation`.


2. Перевірка за допомогою класу Win32_ComputerSystem

(Get-WmiObject -Class Win32_ComputerSystem).Manufacturer

Для віртуальних машин на Hyper-V `Manufacturer` зазвичай повертає `Microsoft Corporation`.


3. Використання класу Win32_SystemEnclosure

(Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes

Ця команда виведе код типу шасі. Для віртуальних машин Hyper-V зазвичай повертається значення `3` (для віртуального шасі).

4. Перевірка через властивості Hyper-V специфічного класу

Get-VM | Where-Object { $_.Name -eq (hostname) }

Ця команда підійде, якщо є доступ до PowerShell команд Hyper-V на хості. Команда спробує знайти віртуальну машину з ім’ям, яке відповідає поточному хосту.

Friday, 1 November 2024

Управляем принтерами из командной строки.

Всем привет.

Мы уже знаем что с помощью PowerShell можно автоматизировать типовые задачи управления принтерами и драйверами печати в Windows. Также одним из широко известных способов управления принтерами в системах Windows различных версий является хост-процесс rundll32.exe, которому передается имя библиотеки printui.dll и точка входа в нее (PrintUIEntry). А чуть ниже будет дан еще один штатный, уже третий, способ управления принтерами - с помощью  vbs-скриптов.

Итак использование rundll32 printui.dll,PrintUIEntry (чтобы получить все эти параметры, нужно вызвать с ключом   /? окно в котором отобразится полный список с примерами): 

rundll32 printui.dll,PrintUIEntry [параметры] [@командный файл]

/a[имя_файл] имя двоичного файла

/b[имя] основное имя принтера

/c [имя] UNC-имя компьютера, где выполняется команда

/dl удаление локального принтера

/dn удаление подключения к сетевому принтеру

/dd удаление драйвера принтера

/e вывод параметров настройки печати

/f[file] или информационный файл, или выходной файл

/F[file] размещение INF-файла, от которого может зависеть INF-файл, указанный в параметре /f

/ga добавление подключений компьютеров к принтеру (подключение распространяется на компьютер пользователя в момент входа в систему)

/ge перечисление подключений компьютеров к принтеру

/gd удаление подключений компьютеров к принтеру (подключение удаляется в момент входа пользователя в систему)

/h[arch] архитектура драйвера, принимает значения: x86, x64 или Itanium

/ia установка драйвера принтера с помощью информационного файла

/id установка драйвера принтера с помощью мастера установки драйверов принтеров

/if установка принтера с помощью информационного файла

/ii установка принтера с помощью мастера установки принтеров и информационного файла

/il установка принтера с помощью мастера установки принтеров

/in добавление подключения к принтеру

/ip установить принтер с помощью мастера установки сетевых принтеров

/j[provider] имя системы печати

/k печать пробной страницы на выбранном принтере, не может использоваться с другими командами установки принтера

/l[path] путь к исходному размещению драйвера принтера

/m[model] имя модели драйвера принтера

/n[name] имя принтера

/o показать очередь заданий на печать

/p отображение свойств принтера

/q тихий режим без вывода сообщений об ошибках

/r[port] имя порта

/s показать свойства сервера

/Ss запись параметров принтера в файл

/Sr чтение параметров принтера из файла

Wednesday, 9 October 2024

Параметри WiFi.

Всім привіт.

Ви напевно знаєте, що я люблю користуватися BGInfo. Впевнений що це дуже корисна утіліта для користувача. На днях я вирішив переписати блок коду щодо отримання параметрів мережі, особливо бездротової: назву SSID, номер каналу, рівень сигналу та швидкість передачі даних.

Перший запит відбувається просто:

Get-NetAdapter -Physical | where Status -eq "Up" | select Name,LinkSpeed

а решту параметрів отримуємо з вихлопу netsh wlan show interfaces. І ось тут є цікавинка - LinkSpeed від першого запиту то значення передачі даних адаптера. Як на мене дивно, бо в серфінгу по Інтернет трафік на отримання даних переважає трафик передачі на порядок. Навіщо тоді мені така LinkSpeed? Тому швидкість передачі та отримання я також беру з netsh.

Ось мій код:

 $a = Get-NetAdapter -Physical | where Status -eq "Up" | select Name,LinkSpeed

if (($a.Name -like "Wi-Fi*") -or ($a.Name -like "Беспроводная*")) {

    # It's a Wi-Fi interface

    $b = (get-netconnectionProfile).Name 

    $if01 = (netsh wlan show interfaces)

    $c = $if01 -Match '^\s+Channel' -Replace '^\s+Channel\s+:\s+',''

    $d = $if01 -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+',''

    $receiveRate = $if01 -Match '^\s+Receive rate \(Mbps\)' -Replace '^\s+Receive rate \(Mbps\)\s+:\s+', ''

    $receiveRate = "$receiveRate Mbps"

    $transmitRate = $if01 -Match '^\s+Transmit rate \(Mbps\)' -Replace '^\s+Transmit rate \(Mbps\)\s+:\s+', ''

    $transmitRate = "$transmitRate Mbps"


# це якщо бажаєте вивести значення в один рядок

#$a.Name+':' +$b +',Ch:' +$c+',Up:' +$d+ ',In:' +$receiveRate+',Out:' +$transmitRate

    Write-Host $a.Name':'$b

    Write-Host 'Channel:'$c

    Write-Host 'Level:'$d

    Write-Host 'Input:'$receiveRate

    Write-Host 'Output:'$transmitRate

    }

else {

    # It's an Ethernet interface

    $a.Name+': '+$a.LinkSpeed

}

 А так виглядає результат:

Щасти.


Tuesday, 1 October 2024

Запуск PowerShell из Python.

Всем привет.

Рассмотрим простой метод интеграции Python и PowerShell.

Самое простое выглядит так что если бы мы смогли исполнять CmdLet PowerShell из Python и перехватывать результаты. Так как PowerShell является неким исполняемым процессом, тем самым мы можем применять стандартную библиотеку Python, предоставляющую возможность запуска поцессов. Это делается с применением стандартной библиотеки subprocess. В Python для применения любой стандартной или сторонней библиотеки вам следует импортировать её. В данном случае это просто:

import subprocess 

Это предоставляет доступ к методам и свойствам, содержащимся в данной библиотеке subprocess. Доступно монжество вариантов - наиболее популярным является применение метода check.output, который исполняет предписанный процесс и возвращает полученный результат. Вот некий пример:

runningProcesses = subprocess.check_output("powershell -Executionpolicy ByPass -Command Get-Process") 

Существует также аналог асинхронного варианта вызова подчинённого процесса, вызов метода await asyncio.create_subprocess_shell()), подробнее в книгах Asyncio в Python 3 Цалеба Хаттингха и Полном руководстве параллельного программирования на Python Куан Нгуена:

import asyncio

async def run(cmd):

    proc = await asyncio.create_subprocess_shell(cmd, stdout=asyncio.subprocess.PIPE,      stderr=asyncio.subprocess.PIPE

    )

    stdout, stderr = await proc.communicate()

    print(f'[{cmd!r} exited with {proc.returncode}]')

    if stdout:

        print(f'[stdout]\n{stdout.decode()}')

    if stderr:

        print(f'[stderr]\n{stderr.decode()}')

asyncio.run(run('powershell -Executionpolicy ByPass -Command Get-Process'))

Saturday, 28 September 2024

Про DNS Client Cache.


Всем привет.

Одной из сильнейших сторон PowerShell является наличие возможности получение удалённых действий при возникновении ситуации отклика в процессе происшествия. Предоставляемая самыми последними версиями PowerShell инфраструктура значительно снижает необходимые сетевые настройки и предлагает значительную безопасность.

В какой-то мере в инструкциях по forensics стороной обходится крайне полезный для локальных и удалённых расследований командлет PowerShell - Get-DNSClientCache.

Кэш клиента DNS, или иначе DNS преобразователь (resolver) является локальной базой данных, сопровождаемой самой операционной системой. Он содержит свидетельчтва последних посещений на веб сайты и прочие местоположения в Интернете. Проще говоря, кэш DNS Клиента это просто некая запись последних запросов DNS, которые ускоряют доступ к уже определённым IP- адресам вебсайтов. Имейте в виду, что очистка истории вашего веб браузера для сокрытия вашей активности не включает кэш преобразователя DNS самих oперационных систем. Многие программы очистки будут очищать этот кэш, однако пользователи могут его пропускать, а он может служить важным свидетельством недавней активности. Кто про такое помнит?

Сам DNS (сервис доменных имён), предоставляет некую трансляцию из дружественных пользователю имён, таких как microsoft.com, google.com и python-forensic.org в IP- адреса, по которым они располагаются. Всякий раз когда вы вводите в своём браузере нечто подобное www.amazon.com, осуществляется поиск DNS для трансляции читаемого человеком адреса в некий IP адрес, по которому можно выполнить доступ.

Запуск процесса Get-DNSClientCache после очистки (ipconfig /flushdns) имеющегося кэша приводит к следующим результатам (альтернатива просмотра ipconfig /displaydns):

PS C:\WINDOWS\system32> Get-DnsClientCache | Select-Object -Property Entry 

Пусто! Естественно, CmdLet ничего не возвращает, поскольку DNS кэш пустой.

Tuesday, 24 September 2024

Управление настройками сети с PowerShell, часть 2.


Всем привет.

Продолжим дергать сетевые настройки с помощью Powershell. Начинал я это делать еще здесь

А сегодня продолжим работу вместе с другим гуру ИТ-администрирования. Сегодня мы рассмотрим основные командлеты, которые позволяют узнать текущий адрес сетевого адаптера, назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети как в Windows 10/11, так и в Windows Server (или версии Sever Core), в Hyper-V Server, для изменения настроек IP сетевых адаптеров на удаленных компьютерах, и в PowerShell скриптах.


Содержание:

  • Управление сетевыми адаптерами в Windows из PowerShell
  • Вывести настройки IP сетевого подключения с PowerShell
  • PowerShell: задать статический IP адрес в Windows
  • Set-DnsClientServerAddress: настроить адреса DNS серверов
  • Управление таблицей маршрутизации с помощью PowerShell
  • PowerShell: получить IP адрес в Windows от DHCP сервера
  • Изменить параметры IP и DNS на удаленном компьютере Windows

В предыдущих версиях в Windows для управления сетевыми настройками из cmd использовалась из CLI использовалась команда netsh. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP.

Чтобы получить список командлетов в этом модуле, выполните:

get-command -module NetTCPIP

В этот модуль также входит командлет Test-NetConnection, который можно использовать для проверки доступности TCP портов на удаленных компьютерах.


Управление сетевыми адаптерами в Windows из PowerShell

Выведите список доступных сетевых интерфейсов в Windows:

Get-NetAdapter

Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.


Чтобы вывести только активные физические сетевые интерфейсы:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}

Можно вывести только определенные параметры сетевых адаптеров, например: имя, скорость, состояние и MAC адрес:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress


В Windows могут присутствовать скрытые сетевые адаптеры. Чтобы вывести их все, добавьте параметр IncludeHidden:

Get-NetAdapter –IncludeHidden

Команда вернет в том числе все виртуальные WAN Miniport адаптеры, которые используются для различных типов подключений включая VPN. Перезапуск этих адаптеров часто позволяет решить некоторые ошибки VPN подключений с помощью встроенного клиента Windows. Для управления сетевыми подключениями VPN доступны отдельные команды PowerShell.


Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический LAN адаптер Intel 82574L нужно набрать команду:

Get-NetAdapter -Name Ethernet0

или

Get-NetAdapter -InterfaceIndex 8

Sunday, 22 September 2024

PowerShell и Wi-Fi.

Всем привет.

Обычно все операции по настройке и выводу информации о сигналах Wi-Fi устройств в системе Windows происходят через окна, то есть графический интерфейс. Сегодня же рассмотрим, как можно применить командную строку PowerShell для отображения такой же и другой информации.   И пусть вас не смущает что в большинстве случаев будут использованы вызовы netsh-команд, которые по сути не являются командлетами PowerShell.

По правде говоря материал почти полностью заимствован из журнала "Системный администратор" №11 за 2021-й год у Сергея Болдина. Но подобное я находил и на других ресурсах сети.

Проверка уровня Wi-Fi сигнала 

Определить уровень сигнала сети (SSID) графически легко – посмотреть на иконку с полосками. Выполнив несложные команды в среде PowerShell, можно получить “цифровой” результат. 

Видимость 3-х полосок на иконке Wi-Fi сигнала говорит о хорошем качестве сигнала (уровень 75 до 100%), 2 полоски – качество среднего уровня (между 50 и 75%), 1 – плохой сигнал (ниже 50 %). Здесь не отображаются значения в виде цифр, зато такое точное значение можно получить с помощью команды: 

netsh wlan show interfaces

Если же нужно видеть только значение уровня сигнала, то другую информацию можно не выводить, указав соответствующие параметры:

(netsh wlan show interfaces) -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+',''

С помощью скрипта PowerShell можно для пользователя выводить всплывающее окно с уведомлением уровня сигнала, например, менее 25%:

$c_level=(netsh wlan show interfaces) -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+','' | Out-String

If ($c_level.replace('%','') –le 25)

{

Add-Type -AssemblyName System.Windows.Forms

$global:msg = New-Object System.Windows.Forms.NotifyIcon

$path = (Get-Process -id $pid).Path

$msg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)

$msg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning

$msg.BalloonTipText = “Уровень Wi-Fi сигнала менее $c_level,

Рекомендуем вернуться к точке доступа!”

$msg.BalloonTipTitle = "Внимание $Env:USERNAME"

$msg.Visible = $true

$msg.ShowBalloonTip(10000)

}

Замечание: рекомендация пользователю вернуться к точке доступа может прозвучать странно ибо ему не всегда известно где же та АР находится.) Тут на ваше усмотрение.

Tuesday, 17 September 2024

Wi-Fi report in Windows.

Всім привіт.

Колись давно я проводив діагностику мережі з Get-NetView. Але сама Windows 11 для цього має функцію для пакетної генерації детального звіту про історію підключень бездротової мережі (Wi-Fi) вашого комп'ютера. 

Звіт містить детальну інформацію про:

1. Мережі Wi-Fi, до яких ви підключалися

2. Тривалість сеансу

3. Будь-які помилки які трапились в роботі мережі

4. Доступні мережні адаптери 

5. Інші дані, виведені кількома командами в інтерфейсі командного рядка (наприклад командний рядок або PowerShell.)

Тобто якщо ви навчитеся користуватися цим інструментом, він може бути корисним для діагностики проблем з підключенням Wi-Fi.

Як створити звіт про безпроводову мережу в Windows? 

Виявляється це надто просто. Можливо ця команда з'явилася нещодавно бо раніше я її в netsh не помічав. Запустіть від імені Адміністратора вікно командного рядка та введіть наступну команду, а потім натисніть клавішу Enter :

netsh wlan show wlanreport

Це все, звіт готовий!  Знайдете його тут C:\ProgramData\Microsoft\Windows\WlanReport



Звіт про безпроводову мережу створено у вигляді HTML-файлу, який можна відкрити у веб-браузері. У звіті відображаються всі події Wi-Fi за останні три дні та групуються за сеансами підключення Wi-Fi. Він також відображає результати кількох сценаріїв командного рядка, пов'язаних із мережею, і список усіх мережних адаптерів на вашому комп'ютері.

Saturday, 13 July 2024

Get address book from printer by SNMP.

Hi all.

By the way, yesterday I had to get the address book from the printer. To find out if there is a specific account there or not. Of course, you can export the book to a csv-file, but it's so tedious to go to the printer's admin web-panel every time. I wondered how it could be done remotely. And this is what ChatGPT advised me to do.

Using SNMP (Simple Network Management Protocol) is a valid approach for managing and retrieving information from network devices like printers. If your Xerox printer supports SNMP, you can indeed query it to retrieve the address book.

Here’s how you can proceed with SNMP in PowerShell:

1. Ensure SNMP is enabled on the printer: Check the printer’s settings to ensure SNMP is enabled and properly configured. You might need to consult the printer's manual for details.

2. Identify the OID (Object Identifier): You need to find the correct OID for the address book. OIDs are unique identifiers used to manage and monitor various aspects of a network device. The specific OID for the address book will depend on the printer model and its SNMP implementation.

3. Use PowerShell to query SNMP: PowerShell does not have built-in SNMP cmdlets, but you can use third-party modules like PSSNMP or SnmpSharpNet to perform SNMP queries.

Here’s an example of how to use SnmpSharpNet to perform an SNMP query:

Install and Import SnmpSharpNet

First, you need to download and reference the SnmpSharpNet library.

# Download the SnmpSharpNet.dll from the official source or a trusted repository.

# Example URL: https://github.com/lextudio/sharpsnmplib/releases

# Assume you've downloaded SnmpSharpNet.dll to C:\path\to\SnmpSharpNet.dll

Add-Type -Path "C:\path\to\SnmpSharpNet.dll"


While I don't have a specific OID for the address book for Xerox printers readily available, I can guide you through common OIDs used in Xerox printers and how to find the OID you need.

Sunday, 7 July 2024

Printer and PowerShell.

Hi all.

With PowerShell, you can easily install a printer driver, add a printer to the repository, and then add a local or shared network printer to your Windows installation. In this post, I will also explain how you can list printers, add a printer port, set the default printer, and remove a printer with PowerShell.

Prerequisites

A note before we start: there is not a one-size-fits-all solution for all printers, since manufacturers have different choices, options, and settings for almost every driver, model, set of printer features, and so on. Therefore, you won't be running the same command for setting duplex and color printing for your Samsung, HP, or Brother printers.

Any supported version of Windows that has Windows PowerShell (5.1) or PowerShell 7 will work. Both will cover the most common scenarios. At the time of writing (Nov. 2022), there are the same number of commands in both versions of PowerShell (15). This might change in the future, as there will be no further development for Windows PowerShell. All the resources and innovations will be in PS7.

Now, it's time to see some of these commands in action. I find it very easy to learn by example, so let's dig in. Of course, like for any PowerShell cmdlet, you can also run Get-Help to get more information about each command.

Before you can install a printer, you'll need the driver for it. While most common printers already have drivers in Windows, there may be a situation when you need to install one from the drivers provided by your vendor.

After the driver is installed, you have to add the printer to the repository and add a printer port. Only then will you be able to add a local printer or a shared network printer with PowerShell. We will do this step-by-step.


Install the printer driver

Once you download the ISO or ZIP archive, extract it to a temp folder, and you'll find a bunch of files. One or more of them will have an .inf extension. Those are the files that you'll reference in the installation commands.

Note that if the drivers come packaged in an ISO file, you will most likely find a file called Autorun.inf in the root folder, which is used to mount and launch the CD when you insert it into a drive. That's not the .inf file you're looking for.

Sometimes, the folder structure can be complicated, particularly for vendors that attempt to install a bunch of utilities and apps with the drivers. To find the right INF file, we can use PowerShell:

Get-ChildItem -Recurse -Filter "*.inf" | Select-Object FullName 

Saturday, 29 June 2024

Управление группами безопасности в AD.


Всем привет.

Рассмотрим управление группами безопасности в каталоге Active Directory с помощью ADSI. Рассмотрим как простые операции с группами: создание, поиск групп, чтение свойств, так и сложные - копирование списков безопасности.

Создание группы безопасности.

# Название создаваемой группы

$GroupName="..."

# Путь к контейнеру, в котором будет создана группа

$objOU=[ADSI]"LDAP://OU=...,DC=test,DC=domain,DC=com"

$objGroup = $objOU.Create("group", "CN=" + $GroupName)

$objGroup.Put("sAMAccountName", $GroupName)

$objGroup.SetInfo()

Для создания группы безопасности в каталоге Active Directory необходимо знать путь к контейнеру, в котором будет создана группа и название самой группы. По умолчанию создается Global Security группа (groupType=-2147483646).

Wednesday, 26 June 2024

Query by ADSI and ADSISearcher.

Hi all.

This post will examine the difference between PowerShell ADSI and ADSISearcher when using PowerShell to query Active Directory. ADSI and ADSISearcher are used to query Active Directory (AD) using Lightweight Directory Access Protocol (LDAP).


WHAT IS LDAP?

LDAP, as the name suggests, is a protocol that provides an interface to query AD directory services.  When we are querying AD we are returning one or more objects with unique identifiers (a Distinguished Name).  And we can do this using two type accelerators called ADSI and ADSISearcher.


WHAT IS A TYPE ACCELERATOR?

A type accelerator is a simple alias to represent a .Net class.  We can return a list of type accelerators like so:

[System.Management.Automation.PSObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Get

You’ll notice that one of the type accelerators is psobject which references the class System.Management.Automation.PSObject. This means we could simplify our command above by using a type accelerator to get a list of all the type accelerators like so!

[psobject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Get

Wednesday, 19 June 2024

Вложенные группы в Active Directory.

Всем привет.

Группы Active Directory используются для множества разных целей, будь то фильтрация групповой политики или назначение определенных привилегий пользователям. Достаточно гибкая структура позволяет разграничивать объекты пользователей и компьютеров наиболее удобным для нас образом.

Но в то же время это приводит к образованию иерархии групп, состоящей из нескольких уровней, тем самым затрудняя определение, в какие же именно группы входит определенный пользователь. Для поиска подобной информации мы можем использовать командлеты модуля Active Directory.

Например поиск по объектам пользователей.

Исходя из 

$SamAccName = 'Morozov-МB'

и

$Name = 'Морозов Марк Васильевич'

чтобы получить список групп, в которые непосредственно входит пользователь, мы можем поступить следующим образом:

Get-ADPrincipalGroupMembership -Identity $SamAccName

Если же нам понадобится узнать все группы, в которые он входит посредством вложенных групп, мы можем воспользоваться командлетом Get-ADAccountAuthorizationGroup:

Get-ADAccountAuthorizationGroup -Identity $SamAccName | Where-Object objectClass

Monday, 20 May 2024

Скрипт для Del All User Temp.

Всім привіт. 

В запасах SCCM Client Center є бібліотека скриптів Powershell. Один з них це DEL-AllUserTemp.ps1 (секція FIX)  від Russ Ring-а який очищає усі тимчасові дані для всіх користувачів на ПК подібно до роботи CCleaner-а.

Але користуйтеся ним з обережністю, а ще краще виконайте власний аудит коду та закоментуйте ті виклики які вас не влаштовують.

Нижче я навожу весь код з коментарями від автора:

# Script: DEL-AllUserTemp.ps1

# Author:   Russ Ring

# Email: russr123@yahoo.com

# Date:     Jan 2016 (Updated Jan 2019)

# Call GCI as Get-ChildItem

# Call GP  as Get-ItemProperty


# Display free drive space

(([wmi]"root\cimv2:Win32_logicalDisk.DeviceID='C:'").FreeSpace/1GB).ToString("N2")+"GB"


GCI 'C:\Users\*\AppData\Local\Temp\*' | remove-item -Force -recurse -ErrorAction SilentlyContinue

GCI 'C:\Users\*\AppData\Local\CrashDumps\*' | remove-item -Force -recurse -ErrorAction SilentlyContinue

GCI 'C:\Users\*\AppData\Local\Microsoft\Windows\WER*' | remove-item -Force -recurse -ErrorAction SilentlyContinue

GP 'C:\Users\*\AppData\Local\Microsoft\Outlook\*.ost' | select length/1MB


GP 'C:\Users\*\AppData\Local\Microsoft\Outlook\*.ost' | Select-Object -Property LastWriteTime, @{N='Size';E={[math]::Round(($_.length /1MB)+"MB")}}, Name | Sort-Object -Property Size;


Remove-Item 'C:\Windows\Temp\*' -Force -recurse

Clear-RecycleBin -force

Sunday, 19 May 2024

How to query AD for Bitlocker details.

 

Hi all.

You must back up your BitLocker recovery key. But you can do this in your business AD. That is post, you can activate and store BitLocker recovery codes in Active Directory (AD) for easy retrieval.

However question - how can you query AD for BitLocker Details? In this post I will show you what you need to do to query AD for BitLocker details. First this post assume that you have administrator rights to access the BitLocker Recover Password details. 


How to query AD for Bitlocker details via ADUC

As I said, I know that BitLocker keys would be stored in the computer object within AD. But where? Using the MEMDP2 as my example.  I open Active Directory Users and Computers (ADUC). I located MEMDP2 and looked at its properties, at first glance, there is nothing to indicated that this computer has a BitLocker Password. And no Password Replication will not store BitLocker details but Attribute Editor might. Lets’ start there.

I know from my other research that the are several Attribute that the data is stored within and they are called:

ms-FVE-KeyPackage

ms-FVE-RecoveryGuid

ms-FVE-RecoveryInformation

ms-FVE-RecoveryPassword

ms-FVE-VolumeGuid


If BitLocker attributes missing form attribute editor you have to install the BitLocker AD module. Since we have all installed a Windows Feature. Just the high lever steps.



I’m preforming these steps on my DC. In the Features windows, select BitLocker Drive Encryption (orange arrow) this will immediately popup Add more feature window, Click Add Feature button. Complete the wizard to finish the install, don’t forget to reboot.



After the reboot I go back into ADUC and select the MEMDP2, we can see the BitLocker Recovery tab. 

Tuesday, 14 May 2024

Секрети активації Windows.

Всім привіт.

Активація Windows розроблена так, щоб бути максимально надійною, тому графічні засоби Microsoft залишаються простими. Якщо ви хочете зробити щось більш просунуте, як видалити ключ продукту, примусово активувати онлайн або розширити таймер активації, вам знадобиться скрипт Slmgr.vbs.

Цей інструмент командного рядка входить до складу Windows і надає опції, недоступні в стандартному інтерфейсі активації, наданому на екрані оновлення та безпеки> Активація в програмі "Налаштування".

Щоб використовувати цей інструмент, потрібно запустити командний рядок з доступом адміністратора. Для цього у Windows 8 або 10 натисніть правою кнопкою миші кнопку Пуск або натисніть Windows + X. Натисніть кнопку "Командний рядок (адміністратор)" у меню, що з'явиться. У Windows 7 виконайте пошук у меню "Пуск" для "Командного рядка", клацніть правою кнопкою миші та виберіть "Запуск від імені адміністратора".

Примітка: Якщо ви побачите PowerShell замість командного рядка в меню Power Users, це перемикач, який виникла за допомогою засобу оновлення Creators Update для Windows 10. Перейти до відображення командного рядка в меню Power Users дуже просто. Ви можете дати PowerShell спробу. У PowerShell можна робити все, що можна робити в командному рядку, а також багато інших корисних речей.


Перегляд інформації про активацію, ліцензію та дату закінчення

Щоб відобразити дуже просту ліцензію та інформацію про активацію поточної системи, виконайте таку команду. Ця команда розповість вам про випуск Windows, частину ключа продукту, щоб ви могли його ідентифікувати, і чи активована система.

slmgr.vbs / dli

Щоб відобразити більш детальну інформацію про ліцензію, включаючи ідентифікатор активації, ідентифікатор установки та інші деталі, виконайте таку команду:

slmgr.vbs / dlv

Sunday, 12 May 2024

Кросс-платформенное удалённое управление в Powershell.


Всем привет.

В своей практике мы осознали, что создатели PowerShell слегка ленивы, и это хорошо. Поскольку они не хотели кодировать параметр -HostName для каждого отдельного командлета, они создали систему удалённого взаимодействия, охватывающую всю оболочку. Данная система позволяет запускать любой командлет в удалённом компьютере. На самом деле, вы даже можете запускать команды, которые имеются в самом удалённом компьютере, но при этом отсутствуют в вашем собственном, то есть вам не всегда необходимо устанавливать все административные командлеты в своей рабочей станции. Такая система удалённого взаимодействия мощная и предлагает интересные административные возможности.

Основная мысль за удалённым PowerShell

Удалённое взаимодействие PowerShell работает схожим образом с Telnet и прочими древними технологиями удалённого управления. Когда вы запускаете некую команду, она исполняется в самом удалённом компьютере - обратно в ваш компьютер приходят лишь получаемые результаты этой команды.

Удалённое взаимодействие на устройствах Windows

PowerShell применяет протокол взаимодействия с названием Web Services for Management (WSMan). WSMan работает целиком поверх HTTP или HTTPS (HTTP по умолчанию), упрощая маршрутизацию через межсетевые экраны в случае их необходимости (поскольку каждый из таких протоколов пользуется для взаимодействия единственным портом). Реализация Microsoft для WSMаn поступает в виде службы в фоновом режиме, Windows Remote Management (WinRM). WinRM по умолчанию устанавливается в устройствах Windows 10, а также в сервере 2012 и выше. По умолчанию, эти службы отключены, но запросто могут включаться индивидуально или групповой политикой.

Удалённое взаимодействие на устройствах macOS и Linux

Как вы могли догадаться, WSMan и WinRM это службы только для Windows. Поэтому, чтобы PowerShell обладал возможностями удалённого взаимодействия, его команда приняла решение что было бы лучше воспользоваться стандартном отрасли Безопасной оболочки (SSH, Secure Shell)/ SSH упрощает маршрутизацию через межсетевые экраны, в случае такой необходимости (потому как этот протокол применяет для взаимодействия единственный порт), и десятилетиями применялся профессионалами Linux. Microsoft портировал в Windows OpenSSH, а потому вы даже можете применять его для удалённого взаимодействия в Windows.

Кросс-платформенное удалённое взаимодействие

Вы уже изучили что все командлеты PowerShell в качестве своего вывода производят объекты. Когда вы выполняете некую удалённую команду, она выдаёт объекты, которые необходимо поместить в некий вид, который запросто передаётся через сетевую среду. Как оказалось, XML - отличный способ для осуществления этого, а потому PowerShell автоматически такие объекты вывода выстраивает в последовательную форму (упорядочение, serializes) в XML. Данный XML передаётся через сетевую среду и затем в вашем компьютере выполняется обратное преобразование в параллельную форму (развёртывание, deserialized) в объекты, с которыми вы можете работать внутри PowerShell.

Упорядочение и развёртывание это всего лишь некий вид преобразования формата: из объектов в XML (упорядочение) и из XML в объекты (развёртывание). Зачем вам беспокоиться относительно того как возвращается такой вывод? Поскольку такие упорядоченные и затем развёрнутые объекты это всего лишь некого рода моментальные снимки; они не обновляются сами по себе непрерывно. Например, когда вы получили определённые объекты, которые представляют тот процесс, который запущен в удалённом компьютере, то что вы получили обратно будет в точности тем, что имелось в тот конкретный момент времени, в который был выработаны эти объекты. Такие объекты, как применение памяти и использование ЦПУ не будут обновляться чтобы отражать последующие условия. Кроме того, вы не можете заставлять свои развёрнутые объекты выполнять что бы то ни было - вы не можете указывать им останавливать себя, например. 

Именно в этом состоят основные ограничения удалённого взаимодействия, однако это не мешает вам выполнять удивительные вещи. На самом деле, вы можете приказать удалённому процессу остановить себя, но для этого нужно быть сообразительным. 

Для работы удалённого взаимодействия у вас имеются два основных требования:

  • Ваш компьютер, и тот, в который вы желаете отправлять команды, оба, должны исполнять PowerShell v7.1 или последнюю версию. 
  • В идеале, оба компьютера должны быть участниками одного и того же домена или доменам с двусторонним доверием. Существует возможность получения удалённого взаимодействия для работы вне домена, однако это слишком заумно.

Saturday, 11 May 2024

SCCM Client Center

Hi all,

Roger Zander’s SCCM Client Center is a free tool for managing and fixing remote System Center Configuration Manager (SCCM) clients right from the comfort of your computer.

I’ve used this great tool for some time now in many different environments, and I can’t say how useful it has been in troubleshooting client computers. You can remotely find out the clients cache location, size, and what's in it, and also find out what packages are advertised to a computer and rerun the advertisement if needed. The list goes on of what you can do with this free tool. 

And now a bit of interesting - I saw that some of the admins insist that the latest version of SCCM Client Center is 2.0.4 which was released back on 2011-10-06. And this version really exists despite the fact that in Roger Zander's GitHub repository the latest version of SCCM Client Center is 1.0.7.2. That's the pun!

Personally, I suggest you use version 1.0.7.2, it is also freeware, but unlike 2.0.4, it has more functionality, as well as a window at the bottom where the corresponding Powershell script is displayed for each command.

Running Executions

The Running Executions function group is broken down into three sub tabs SMS/SCCM Jobs, Processes, and Services. Once you have connected to an SCCM Client you can use these tabs to display, start, and stop all current running SCCM jobs, running services, or processes. You can also view all jobs that are in queue and see what might be holding up that job like a file download for example. I know what you’re thinking; well I can do all that with the SCCM Console, and that is true but, the problem is that SCCM won’t put it all together in package like SCCM Client Center does.


Event Monitor

When troubleshooting SCCM clients, it might be necessary to get deep into the weeds. That is what makes having the Event Monitor function group readily accessible in one all encompassing application such huge time saver. It allows you to access the multiple client logs from one easy to use interface.


Saturday, 13 April 2024

Відключаємо BitLocker.

Всім привіт. 

Трохи довідки щодо BitLocker.

Відмінити повністю дію  BitLocker до диску D: 

C:\Windows\System32>manage-bde.exe d: -off 

Якщо раптом тут отримаєте помилку типу: 

BitLocker Drive Encryption: Configuration Tool version 10.0.22621 

ERROR: An error occurred (code 0x8004100e): 

Invalid namespace 

тоді вам потрібно попередньо використати таку команду: 

mofcomp.exe c:\windows\system32\wbem\win32_encryptablevolume.mof 

Після цього повторіть спробу дешифрування диску після введення коду відновлення: 

manage-bde.exe d: -off 

Якщо ви проводите таку операцію щодо системного диску "С" тоді вам треба налаштувати ще локальну політику щодо  BitLocker.

Статус дешифрування завжди можно перевірити так:

manage-bde.exe d: -status 


Тимчасово призупинити (тобто не відмінити зовсім) дію BitLocker-а можно так: 

Manage-bde.exe –Protectors –Disable d: -RebootCount 0

де значення RebootCount  задає кількість перезапусків комп'ютера перед відновленням захисту BitLocker. Допустимі значення для цього параметра: числа від 0 до 15, де 0 це означає призупинення захисту на невизначений термін до його ручного ввімкнення користувачем. 

Та сама дія в Powershell виглядає так: 

Suspend-BitLocker -MountPoint "d:" -RebootCount 0 

Щасти вам.


Tuesday, 12 March 2024

Режим временного пользователя в группе AD.


Всем привет. 

В Windows Server 2016 появился полезный функционал - режим временного добавления пользователя в группу с автоматическим удалением через указанное время. Т.е. администратор может включить другого пользователя в нужную группу на пару минут для решения срочной задачи и не заботиться про то чтобы эти права у пользователя позже отозвать. Фича работает только через Powershell.

С чего начать? Проверяем режим работы леса, должен быть 2016 и выше: 

(Get-ADForest).ForestMode

Проверяем диапазон:

Get-ADOptionalFeature -filter *| select EnableScopes

И включаем функционал, внимаение - включение работает в одну сторону и его отмена невозможна:

Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target company.com

Отлично. Теперь задаем временной интервал в минутах (можно использовать и часы -Hours) и добавляем пользователя alex в группу "Администраторы домена":

$ttl = New-TimeSpan -Minutes 2

Add-ADGroupMember -Identity "Администраторы домена" -Members alex -MemberTimeToLive $ttl

В любой момент можем проверить сколько осталось времени до удаления пользователя из группы, смотрим на значение TTL:

Get-ADGroup “Администраторы домена” -Property member –ShowMemberTimeToLive


По истечении двух минут пользователь alex будет удален из группы “Администраторы домена” автоматически. Надеюсь он успеет решить проблему за это время.

Успехов.

Версия на печать

Популярное