Add files via upload
This commit is contained in:
parent
abc1e193ad
commit
56572615a6
1 changed files with 156 additions and 51 deletions
205
posh.txt
205
posh.txt
|
|
@ -4,8 +4,9 @@ PowerShell Commands
|
||||||
- Regex
|
- Regex
|
||||||
- Items
|
- Items
|
||||||
- Credential
|
- Credential
|
||||||
- Event
|
- WinEvent
|
||||||
- Firewall
|
- Firewall
|
||||||
|
- Defender
|
||||||
- Performance
|
- Performance
|
||||||
- Regedit
|
- Regedit
|
||||||
- Scheduled
|
- Scheduled
|
||||||
|
|
@ -220,19 +221,19 @@ Get-Process | Sort-Object -Descending CPU | select -Last 10 # вывести п
|
||||||
|
|
||||||
### NPP
|
### NPP
|
||||||
|
|
||||||
pwsh -NoExit -ExecutionPolicy Unrestricted -File "$(FULL_CURRENT_PATH)"
|
pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"
|
||||||
|
|
||||||
. # Точка. Обозначает любой символ
|
. # Обозначает любой символ
|
||||||
\ # Экранирующий символ. Символы которые экранируются: ^, [, ., $, {, *, (, ), \, +, |, ?, <, >
|
\ # Экранирующий символ. Символы которые экранируются: ^, [, ., $, {, *, (, ), \, +, |, ?, <, >
|
||||||
^ # Крышка. Начало строки
|
^ # Начало строки
|
||||||
$ # Конец строки
|
$ # Конец строки
|
||||||
|
\n # Новая строка
|
||||||
\d # Любая цифра
|
\d # Любая цифра
|
||||||
\D # Не цифра
|
\D # Не цифра
|
||||||
\s # Пробел, табуляция, перенос строки
|
|
||||||
\S # Не пробел
|
|
||||||
\w # Любая буква латиницы, цифра, или знак подчёркивания
|
\w # Любая буква латиницы, цифра, или знак подчёркивания
|
||||||
\W # Не латиница, не цифра, не подчёркивание
|
\W # Не латиница, не цифра, не подчёркивание
|
||||||
| # Или. Соединяет несколько вариантов
|
\s # Пробел, табуляция, перенос строки
|
||||||
|
\S # Не пробел
|
||||||
\b # Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова
|
\b # Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова
|
||||||
\B # Не граница слова
|
\B # Не граница слова
|
||||||
\< # Начало слова
|
\< # Начало слова
|
||||||
|
|
@ -242,11 +243,14 @@ $ # Конец строки
|
||||||
* # Повторитель. Означает что предшествующий символ может работать 0 и более раз
|
* # Повторитель. Означает что предшествующий символ может работать 0 и более раз
|
||||||
+ # Количество предшествующего не менее 1-го.
|
+ # Количество предшествующего не менее 1-го.
|
||||||
? # Ограничитель. Не более одного раза
|
? # Ограничитель. Не более одного раза
|
||||||
|
| # Или. Соединяет несколько вариантов
|
||||||
|
() # В круглые скобки заключаются все комбинации с "или" и поиск начала и конца строк
|
||||||
[ ] # В квадратных скобках задаются символы к поиску, например [a-яА-Я], или [0-9]
|
[ ] # В квадратных скобках задаются символы к поиску, например [a-яА-Я], или [0-9]
|
||||||
[^ ] # Исключает из поиска символы указанные в квадратных скобках
|
[^ ] # Исключает из поиска символы указанные в квадратных скобках
|
||||||
() # В круглые скобки заключаются все комбинации с "или" и поиск начала и конца строк
|
{ } # В фигурных скобках указывается точное количество вхождений
|
||||||
{ } # В фигурных скобках указывается точное количество вхождений, например если надо две цифры, то \d{2}, если две или четыре, то \d{2,4}, если четыре и более, то {4,}
|
\d{2} # Найти две цифры
|
||||||
\n # Новая строка
|
\d{2,4} # Найти две или четыре
|
||||||
|
{4,} # Найти четыре и более
|
||||||
|
|
||||||
# Regex
|
# Regex
|
||||||
|
|
||||||
|
|
@ -511,44 +515,73 @@ $AESKey | Out-File "C:\password.key"
|
||||||
$Cred.Password | ConvertFrom-SecureString -Key (Get-Content "C:\password.key") | Set-Content "C:\password.txt" # сохранить пароль в файл используя внешний ключ
|
$Cred.Password | ConvertFrom-SecureString -Key (Get-Content "C:\password.key") | Set-Content "C:\password.txt" # сохранить пароль в файл используя внешний ключ
|
||||||
$pass = Get-Content "C:\password.txt" | ConvertTo-SecureString -Key (Get-Content "\\Server\Share\password.key") # расшифровать пароль на втором компьютере
|
$pass = Get-Content "C:\password.txt" | ConvertTo-SecureString -Key (Get-Content "\\Server\Share\password.key") # расшифровать пароль на втором компьютере
|
||||||
|
|
||||||
# Event
|
# WinEvent
|
||||||
|
|
||||||
### EventLog
|
Get-WinEvent -ListLog * # отобразить все доступные журналы логов
|
||||||
Get-EventLog -List # отобразить все корневые журналы логов и их размер
|
Get-WinEvent -ListLog * | where RecordCount -ne 0 | where RecordCount -ne $null | sort -Descending RecordCount # отобразить не пустые журналы с сортировкой по кол-ву записей
|
||||||
Clear-EventLog Application # очистить логи указанного журнала
|
Get-WinEvent -ListProvider * | ft # отобразить всех провайдеров приложений
|
||||||
Get-EventLog -LogName Security -InstanceId 4624 # найти логи по ID в журнале Security
|
Get-WinEvent -ListProvider GroupPolicy # найти в какой журнал LogLinks {Application} пишутся логи приложения
|
||||||
|
Get-WinEvent -ListProvider *smb*
|
||||||
|
Get-WinEvent -ListLog * | where logname -match SMB | sort -Descending RecordCount # найти все журналы по имени
|
||||||
|
Get-WinEvent -LogName "Microsoft-Windows-SmbClient/Connectivity"
|
||||||
|
Get-WinEvent -ListProvider *firewall*
|
||||||
|
|
||||||
function Get-Log {
|
### Filter XPath/Hashtable
|
||||||
Param(
|
|
||||||
[Parameter(Mandatory = $true, ValueFromPipeline = $true)][int]$Count,
|
|
||||||
$Hour
|
|
||||||
)
|
|
||||||
if ($Hour -ne $null) {
|
|
||||||
Get-EventLog -LogName Application -Newest $Count | ? TimeWritten -ge (Get-Date).AddHours($Hour)
|
|
||||||
} else {
|
|
||||||
Get-EventLog -LogName Application -Newest $Count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
10 | Get-Log
|
|
||||||
Get-Log 100 -2
|
|
||||||
|
|
||||||
### WinEvent
|
|
||||||
Get-WinEvent -ListLog * | where logname -match SMB | sort -Descending RecordCount # отобразить все доступные журналы логов
|
|
||||||
Get-WinEvent -LogName "Microsoft-Windows-SmbClient/Connectivity" | where
|
|
||||||
Get-WinEvent -LogName Security -MaxEvents 100 # отобразить последние 100 событий
|
|
||||||
Get-WinEvent -FilterHashtable @{LogName="Security";ID=4624} # найти логи по ID в журнале Security
|
Get-WinEvent -FilterHashtable @{LogName="Security";ID=4624} # найти логи по ID в журнале Security
|
||||||
|
Get-WinEvent -FilterHashtable @{LogName="System";Level=2} # найти все записи ошибки (1 - критический, 3 - предупреждение, 4 - сведения)
|
||||||
|
Get-WinEvent -FilterHashtable @{LogName="System";Level=2;ProviderName="Service Control Manager"} # отфильтровать по имени провайдера
|
||||||
|
|
||||||
$obj = @()
|
([xml](Get-WinEvent -FilterHashtable @{LogName="Security";ID=4688} -MaxEvents 1).ToXml()).Event.EventData.Data # отобразить все свойства, хранимые в EventData (Message)
|
||||||
$fw = Get-WinEvent "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"
|
Get-WinEvent -FilterHashtable @{logname="security";ID=4688} -MaxEvents 1 | select timecreated,{$_.Properties[5].value} # отфильтровать время события и имя запущенного процесса
|
||||||
foreach ($temp_fw in $fw) {
|
|
||||||
if ($temp_fw.id -eq 2004) {$type = "Added Rule"} elseif ($id -eq 2006) {$type = "Deleted Rule"}
|
|
||||||
$port = $temp_fw.Properties[7] | select -ExpandProperty value
|
|
||||||
$name = $temp_fw.Properties[1] | select -ExpandProperty value
|
|
||||||
$obj += [PSCustomObject]@{Time = $temp_fw.TimeCreated; Type = $type; Port = $port; Name = $name}
|
|
||||||
}
|
|
||||||
$obj
|
|
||||||
|
|
||||||
### XPath
|
$query = '
|
||||||
|
<QueryList>
|
||||||
|
<Query Id="0" Path="Security">
|
||||||
|
<Select Path="Security">
|
||||||
|
*[System[EventID=4688]] and
|
||||||
|
*[EventData[Data[@Name="NewProcessName"]="C:\Windows\System32\autochk.exe" or Data[@Name="NewProcessName"]="C:\Windows\System32\services.exe"]]
|
||||||
|
</Select>
|
||||||
|
</Query>
|
||||||
|
</QueryList>
|
||||||
|
'
|
||||||
|
|
||||||
|
Get-WinEvent -LogName Security -FilterXPath $query
|
||||||
|
|
||||||
|
### Reboot
|
||||||
|
|
||||||
|
$query = '
|
||||||
|
<QueryList>
|
||||||
|
<Query Id="0" Path="System">
|
||||||
|
<Select Path="System">
|
||||||
|
*[
|
||||||
|
System[
|
||||||
|
EventID=41 or
|
||||||
|
EventID=1074 or
|
||||||
|
EventID=1076 or
|
||||||
|
EventID=6005 or
|
||||||
|
EventID=6006 or
|
||||||
|
EventID=6008 or
|
||||||
|
EventID=6009 or
|
||||||
|
EventID=6013
|
||||||
|
]
|
||||||
|
]
|
||||||
|
</Select>
|
||||||
|
</Query>
|
||||||
|
</QueryList>
|
||||||
|
'
|
||||||
|
Get-WinEvent -LogName System -FilterXPath $query
|
||||||
|
|
||||||
|
41 # Система была перезагружена без корректного завершения работы.
|
||||||
|
1074 # Система была корректного выключена пользователем или процессом.
|
||||||
|
1076 # Следует за Event ID 6008 и означает, что первый пользователь (с правом выключения системы) подключившийся к серверу после неожиданной перезагрузки или выключения, указал причину этого события.
|
||||||
|
6005 # Запуск "Журнала событий Windows" (Event Log). Указывает на включение системы.
|
||||||
|
6006 # Остановка «Журнала событий Windows». Указывает на выключение системы.
|
||||||
|
6008 # Предыдущее выключение системы было неожиданным.
|
||||||
|
6009 # Версия операционной системы, зафиксированная при загрузке системы.
|
||||||
|
6013 # Время работы системы (system uptime) в секундах.
|
||||||
|
|
||||||
|
### Logon
|
||||||
|
|
||||||
$srv = "localhost"
|
$srv = "localhost"
|
||||||
$FilterXPath = '<QueryList><Query Id="0"><Select>*[System[EventID=21]]</Select></Query></QueryList>'
|
$FilterXPath = '<QueryList><Query Id="0"><Select>*[System[EventID=21]]</Select></Query></QueryList>'
|
||||||
|
|
@ -564,8 +597,24 @@ New-Object PSObject -Property @{
|
||||||
}}
|
}}
|
||||||
$EventData | ft
|
$EventData | ft
|
||||||
|
|
||||||
|
### EventLog
|
||||||
|
|
||||||
|
Get-EventLog -List # отобразить все корневые журналы логов и их размер
|
||||||
|
Clear-EventLog Application # очистить логи указанного журнала
|
||||||
|
Get-EventLog -LogName Security -InstanceId 4624 # найти логи по ID в журнале Security
|
||||||
|
|
||||||
# Firewall
|
# Firewall
|
||||||
|
|
||||||
|
$obj = @()
|
||||||
|
$fw = Get-WinEvent "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"
|
||||||
|
foreach ($temp_fw in $fw) {
|
||||||
|
if ($temp_fw.id -eq 2004) {$type = "Added Rule"} elseif ($id -eq 2006) {$type = "Deleted Rule"}
|
||||||
|
$port = $temp_fw.Properties[7] | select -ExpandProperty value
|
||||||
|
$name = $temp_fw.Properties[1] | select -ExpandProperty value
|
||||||
|
$obj += [PSCustomObject]@{Time = $temp_fw.TimeCreated; Type = $type; Port = $port; Name = $name}
|
||||||
|
}
|
||||||
|
$obj
|
||||||
|
|
||||||
New-NetFirewallRule -Profile Any -DisplayName "Open Port 135 RPC" -Direction Inbound -Protocol TCP -LocalPort 135 # открыть in-порт
|
New-NetFirewallRule -Profile Any -DisplayName "Open Port 135 RPC" -Direction Inbound -Protocol TCP -LocalPort 135 # открыть in-порт
|
||||||
Get-NetFirewallRule | Where-Object {$_.DisplayName -match "135"} # найти правило по имени
|
Get-NetFirewallRule | Where-Object {$_.DisplayName -match "135"} # найти правило по имени
|
||||||
Get-NetFirewallPortFilter | where LocalPort -like 80 # найти действующие правило по номеру порта
|
Get-NetFirewallPortFilter | where LocalPort -like 80 # найти действующие правило по номеру порта
|
||||||
|
|
@ -578,10 +627,53 @@ Get-NetFirewallRule -Enabled True -Direction Inbound | select -Property DisplayN
|
||||||
Enabled,Profile
|
Enabled,Profile
|
||||||
|
|
||||||
### Firewall-Manager
|
### Firewall-Manager
|
||||||
|
|
||||||
Install-Module Firewall-Manager
|
Install-Module Firewall-Manager
|
||||||
Export-FirewallRules -Name * -CSVFile $home\documents\fw.csv # -Inbound -Outbound -Enabled -Disabled -Allow -Block (фильтр правил для экспорта)
|
Export-FirewallRules -Name * -CSVFile $home\documents\fw.csv # -Inbound -Outbound -Enabled -Disabled -Allow -Block (фильтр правил для экспорта)
|
||||||
Import-FirewallRules -CSVFile $home\documents\fw.csv
|
Import-FirewallRules -CSVFile $home\documents\fw.csv
|
||||||
|
|
||||||
|
# Defender
|
||||||
|
|
||||||
|
Import-Module Defender
|
||||||
|
Get-Command -Module Defender
|
||||||
|
Get-MpComputerStatus
|
||||||
|
(Get-MpComputerStatus).AntivirusEnabled # статус работы антивируса
|
||||||
|
|
||||||
|
$session = NewCimSession -ComputerName hostname # подключиться к удаленному компьютеру, используется WinRM
|
||||||
|
Get-MpComputerStatus -CimSession $session | fl fullscan* # узнать дату последнего сканирования на удаленном компьютере
|
||||||
|
|
||||||
|
Get-MpPreference # настройки
|
||||||
|
(Get-MpPreference).ScanPurgeItemsAfterDelay # время хранения записей журнала защитника в днях
|
||||||
|
Set-MpPreference -ScanPurgeItemsAfterDelay 30 # изменить время хранения
|
||||||
|
ls "C:\ProgramData\Microsoft\Windows Defender\Scans\History"
|
||||||
|
Get-MpPreference | select disable* # отобразить статус всех видов проверок/сканирований
|
||||||
|
Set-MpPreference -DisableRealtimeMonitoring $true # отключить защиту Defender в реальном времени (использовать только ручное сканирование)
|
||||||
|
Set-MpPreference -DisableRemovableDriveScanning $false # включить сканирование USB накопителей
|
||||||
|
Get-MpPreference | select excl* # отобразить список всех исключений
|
||||||
|
Add-MpPreference -ExclusionPath C:\install # добавить директорию в исключение
|
||||||
|
Remove-MpPreference -ExclusionPath C:\install # удалить из исключения
|
||||||
|
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force # полностью отключить Windows Defender
|
||||||
|
|
||||||
|
Set-MpPreference -SignatureDefinitionUpdateFileSharesSources \\FileShare1\Updates # для обновления из сетевой папки нужно предварительно скачать файлы с сигнатурами баз с сайта https://www.microsoft.com/security/portal/definitions/adl.aspx и поместить в сетевой каталог
|
||||||
|
Update-MpSignature -UpdateSource FileShares # изменить источник обновлений (MicrosoftUpdateServer – сервера обновлений MS в интернете, InternalDefinitionUpdateServer — внутренний WSUS сервер)
|
||||||
|
Update-MpSignature # обновить сигнатуры
|
||||||
|
|
||||||
|
Start-MpScan -ScanType QuickScan # быстрая проверка или FullScan
|
||||||
|
Start-MpScan -ScanType FullScan -AsJob
|
||||||
|
Set-MpPreference -RemediationScheduleDay 1-7 # выбрать дни, начиная с воскресенья или 0 каждый день, 8 - сбросить
|
||||||
|
Set-MpPreference -ScanScheduleQuickScanTime 14:00:00
|
||||||
|
Start-MpScan -ScanType CustomScan -ScanPath "C:\Program Files" # сканировать выбранную директорию
|
||||||
|
|
||||||
|
Get-MpThreat # история угроз и тип угрозы (ThreatName: HackTool/Trojan)
|
||||||
|
Get-MpThreatCatalog # список известных видов угроз
|
||||||
|
Get-MpThreatDetection # история защиты (активных и прошлые) и ID угрозы
|
||||||
|
Get-MpThreat -ThreatID 2147760253
|
||||||
|
|
||||||
|
ls "C:\ProgramData\Microsoft\Windows Defender\Quarantine\" # директория хранения файлов в карантине
|
||||||
|
cd "C:\Program Files\Windows Defender\"
|
||||||
|
.\MpCmdRun.exe -restore -name $ThreatName # восстановить файл из карантина
|
||||||
|
.\MpCmdRun.exe -restore -filepath $path_file
|
||||||
|
|
||||||
# Performance
|
# Performance
|
||||||
|
|
||||||
(Get-Counter -ListSet *).CounterSetName # вывести список всех доступных счетчиков производительности в системе
|
(Get-Counter -ListSet *).CounterSetName # вывести список всех доступных счетчиков производительности в системе
|
||||||
|
|
@ -3507,30 +3599,42 @@ Get-DscResource -Name File -Syntax # https://learn.microsoft.com/ru-ru/powershel
|
||||||
Ensure = Present # настройка должна быть включена (каталог должен присутствовать, процесс должен быть запущен, если нет – создать, запустить)
|
Ensure = Present # настройка должна быть включена (каталог должен присутствовать, процесс должен быть запущен, если нет – создать, запустить)
|
||||||
Ensure = Absent # настройка должна быть выключена (каталога быть не должно, процесс не должен быть запущен, если нет – удалить, остановить)
|
Ensure = Absent # настройка должна быть выключена (каталога быть не должно, процесс не должен быть запущен, если нет – удалить, остановить)
|
||||||
|
|
||||||
Configuration DSConfigurationProxy {
|
Configuration TestConfiguraion
|
||||||
Node vproxy-01 {
|
{
|
||||||
File CreateDir {
|
Ctrl+Space
|
||||||
|
}
|
||||||
|
|
||||||
|
Configuration DSConfigurationProxy
|
||||||
|
{
|
||||||
|
Node vproxy-01
|
||||||
|
{
|
||||||
|
File CreateDir
|
||||||
|
{
|
||||||
Ensure = "Present"
|
Ensure = "Present"
|
||||||
Type = "Directory"
|
Type = "Directory"
|
||||||
DestinationPath = "C:\Temp"
|
DestinationPath = "C:\Temp"
|
||||||
}
|
}
|
||||||
Service StopW32time {
|
Service StopW32time
|
||||||
|
{
|
||||||
Name = "w32time"
|
Name = "w32time"
|
||||||
State = "Stopped" # Running
|
State = "Stopped" # Running
|
||||||
}
|
}
|
||||||
WindowsProcess RunCalc {
|
WindowsProcess RunCalc
|
||||||
|
{
|
||||||
Ensure = "Present"
|
Ensure = "Present"
|
||||||
Path = "C:\WINDOWS\system32\calc.exe"
|
Path = "C:\WINDOWS\system32\calc.exe"
|
||||||
Arguments = ""
|
Arguments = ""
|
||||||
}
|
}
|
||||||
Registry RegSettings {
|
Registry RegSettings
|
||||||
|
{
|
||||||
Ensure = "Present"
|
Ensure = "Present"
|
||||||
Key = "HKEY_LOCAL_MACHINE\SOFTWARE\MySoft"
|
Key = "HKEY_LOCAL_MACHINE\SOFTWARE\MySoft"
|
||||||
ValueName = "TestName"
|
ValueName = "TestName"
|
||||||
ValueData = "TestValue"
|
ValueData = "TestValue"
|
||||||
ValueType = "String"
|
ValueType = "String"
|
||||||
}
|
}
|
||||||
# WindowsFeature IIS {
|
# WindowsFeature IIS
|
||||||
|
# {
|
||||||
# Ensure = "Present"
|
# Ensure = "Present"
|
||||||
# Name = "Web-Server"
|
# Name = "Web-Server"
|
||||||
# }
|
# }
|
||||||
|
|
@ -3548,9 +3652,10 @@ icm $srv {ls C:\ | ? name -match Temp} | ft # rm
|
||||||
|
|
||||||
# Ansible
|
# Ansible
|
||||||
|
|
||||||
|
apt-get update && apt-get upgrade
|
||||||
apt-get install ansible
|
apt-get install ansible
|
||||||
|
|
||||||
nano /etc/ansible/ansible.cfg
|
nano /etc/ansible/ansible.cfg # файл конфигурации
|
||||||
#inventory = /etc/ansible/hosts
|
#inventory = /etc/ansible/hosts
|
||||||
|
|
||||||
nano /etc/ansible/hosts
|
nano /etc/ansible/hosts
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue