Update README.md
This commit is contained in:
parent
7c3ebfcbe5
commit
520aba62c6
1 changed files with 336 additions and 0 deletions
336
README.md
336
README.md
|
|
@ -193,3 +193,339 @@
|
|||
`-ge` больше или равно \
|
||||
`-lt` меньше (less) \
|
||||
`-le` меньше или равно
|
||||
|
||||
### Foreach
|
||||
`$list = 100..110` создать массив из цифр от 100 до 110 \
|
||||
`foreach ($srv in $list) {ping 192.168.3.$srv -n 1 -w 50}` $srv хранит текущий элемент из $list и повторяет команду до последнего элемента в массиве \
|
||||
`$foreach.Current` текущий элемент в цикле \
|
||||
`$foreach.Reset()` обнуляет итерацию, перебор начнется заново, что приводит к бесконечному циклу \
|
||||
`$foreach.MoveNext()` переход к следующему элементу в цикле
|
||||
|
||||
### ForEach-Object
|
||||
`100..110 | %{ping -n 1 -w 50 192.168.3.$_ > $null` \
|
||||
`if ($LastExitCode -eq 0) {Write-Host "192.168.3.$_" -ForegroundColor green` \
|
||||
`} else {` \
|
||||
`Write-Host "192.168.3.$_"-ForegroundColor Red}}` \
|
||||
`%` передать цикл через конвеер (ForEach-Object) \
|
||||
`$_` переменная цикла и конвеера ($PSItem) \
|
||||
`gwmi Win32_QuickFixEngineering | where {$_.InstalledOn.ToString() -match "2022"} | %{($_.HotFixID.Substring(2))}` gwmi создает массив, вывод команды передается where для поиска подходящих под критерии объектов. По конвееру передается в цикл для удаления первых (2) символов методом Substring из всех объектов HotFixID.
|
||||
|
||||
### While
|
||||
`$srv = "yandex.ru"` \
|
||||
`$out2 = "Есть пинг"` \
|
||||
`$out3 = "Нет пинга"` \
|
||||
`$out = $false` # предварительно сбросить переменную, While проверяет условие до запуска цикла \
|
||||
`While ($out -eq $false){` # пока условие является $true, цикл будет повторяться \
|
||||
`$out = ping -n 1 -w 50 $srv` \
|
||||
`if ($out -match "ttl") {$out = $true; $out2} else {$out = $false; $out3; sleep 1}` \
|
||||
`}`
|
||||
|
||||
`while ($True){` # запустить бесконечный цикл \
|
||||
`$result = ping yandex.ru -n 1 -w 50` \
|
||||
`if ($result -match "TTL"){` # условие, при котором будет выполнен break \
|
||||
`Write-Host "Сайт доступен"` \
|
||||
`break` # остановит цикл \
|
||||
`} else {Write-Host "Сайт недоступен"; sleep 1}` \
|
||||
`}`
|
||||
|
||||
### Select-String
|
||||
`ipconfig /all | Select-String dns` поиск текста
|
||||
|
||||
### Select-Object
|
||||
`Get-Process | Select-Object -Property *` отобразить все доступные объекты вывода \
|
||||
`Get-Process | select -Unique "Name"` удалить повторяющиеся значения в массиве \
|
||||
`Get-Process | select -ExpandProperty ProcessName` преобразовать из объекта-коллекции в массив (вывести содержимое без наименовая столбца) \
|
||||
`(Get-Process).ProcessName`
|
||||
|
||||
`ps | Sort-Object -Descending CPU | select -first 10 ProcessName,` # сортировка по CPU, вывести первых 10 значений (-first) \
|
||||
`@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},` # затрачено процессорного времени в минутах \
|
||||
`@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},` # делим байты на КБ \
|
||||
`@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}}` # вычесть из текущего времени - время запуска, и удалить milisec
|
||||
|
||||
### Format-Table/Format-List
|
||||
`Get-Process | ft ProcessName, StartTime -Autosize` автоматическая группировка размера столбцов
|
||||
|
||||
### Compare-Object
|
||||
`Compare-Object -ReferenceObject (Get-Content -Path .\file1.txt) -DifferenceObject (Get-Content -Path .\file2.txt)` сравнение двух файлов \
|
||||
`$group1 = Get-ADGroupMember -Identity "Domain Admins"` \
|
||||
`$group2 = Get-ADGroupMember -Identity "Enterprise Admins"` \
|
||||
`Compare-Object -ReferenceObject $group1 -DifferenceObject $group2 -IncludeEqual`
|
||||
`==` нет изменений \
|
||||
`<=` есть изменения в $group1 \
|
||||
`=>` есть изменения в $group2 \
|
||||
|
||||
### Where-Object
|
||||
`Get-Process | Where-Object {$_.ProcessName -match "zabbix"}` фильтрация/поиск процессов по имени свойства объекта \
|
||||
`Get-Process | where CPU -gt 10 | Sort-Object -Descending CPU` вывести объекты, где значения CPU больше 10 \
|
||||
`Get-Process | where WS -gt 200MB` отобразить процессы где WS выше 200МБ \
|
||||
`Get-Service | where Name -match "zabbix"` поиск службы \
|
||||
`Get-Service -ComputerName $srv | Where {$_.Name -match "WinRM"} | Restart-Service` перезапустить службу на удаленном компьютере \
|
||||
`(Get-Service).DisplayName` вывести значения свойства массива \
|
||||
`netstat -an | where {$_ -match 443}` \
|
||||
`(netstat -an) -match 443`
|
||||
|
||||
### Sort-Object
|
||||
`Get-Process | Sort-Object -Descending CPU | ft` обратная (-Descending) сортировка по CPU \
|
||||
`$path[-1..-10]` # обратная сборка массива без сортировки
|
||||
|
||||
### Last/First
|
||||
`Get-Process | Sort-Object -Descending CPU | select -First 10` вывести первых 10 объектов \
|
||||
`Get-Process | Sort-Object -Descending CPU | select -Last 10` вывести последних 10 объектов
|
||||
|
||||
### ConvertTo-HTML
|
||||
`Get-Process | select Name, CPU | ConvertTo-HTML -As list > "$env:userprofile\desktop\proc-list.html"` вывод в формате List (Format-List) или Table (Format-Table)
|
||||
|
||||
### Get-EventLog
|
||||
`Get-EventLog -List` отобразить все корневые журналы логов и их размер \
|
||||
`Clear-EventLog Application` очистить логи указанного журнала \
|
||||
`Get-EventLog -LogName Security -InstanceId 4624` найти логи по ID в журнале Security
|
||||
|
||||
`function Get-Log ($count=30,$hour=-3) {` # указать значения параметров по умолчанию \
|
||||
`Get-EventLog -LogName Application -Newest $count | where-Object TimeWritten -ge (Get-Date).AddHours($hour)` # отобразить 30 новых событий за последние 3 часа \
|
||||
`}` \
|
||||
`Get-Log 10 -1` # передача параметров функции (если значения идут по порядку, то можно не указывать названия переменных)
|
||||
|
||||
### Get-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
|
||||
|
||||
`$RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" -FilterXPath '<QueryList><Query Id="0"><Select>*[System[EventID=1149]]</Select></Query></QueryList>'` \
|
||||
`[xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()}` \
|
||||
`$EventData = Foreach ($event in $xml.Event) {` \
|
||||
`New-Object PSObject -Property @{` \
|
||||
`"Время подключения" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K')` \
|
||||
`"Имя пользователя" = $event.UserData.EventXML.Param1` \
|
||||
`"Адрес клиента" = $event.UserData.EventXML.Param3` \
|
||||
`}}` \
|
||||
`$EventData | Out-Gridview -Title "История RDP подключений на сервере $srv"`
|
||||
|
||||
`$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}` \
|
||||
`}`
|
||||
|
||||
### Time
|
||||
`(Measure-Command {ping ya.ru}).TotalSeconds` узнать только время выполнения \
|
||||
`(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine` посчитать время работы последней [-1] (select -Last 1) выполненной команды и узнать ее статус \
|
||||
`$start_time = Get-Date` зафиксировать время до выполнения команды \
|
||||
`$end_time = Get-Date` зафиксировать время по завершению \
|
||||
`$time = $end_time - $start_time` высчитать время работы скрипта \
|
||||
`$min = $time.minutes` \
|
||||
`$sec = $time.seconds` \
|
||||
`Write-Host "$min минут $sec секунд"` \
|
||||
`$timer = [System.Diagnostics.Stopwatch]::StartNew()` запустить таймер \
|
||||
`$timer.IsRunning` статус работы таймера \
|
||||
`$timer.Elapsed.TotalSeconds` отобразить время с момента запуска (в секундах) \
|
||||
`$timer.Stop()` остановить таймер
|
||||
|
||||
### Firewall
|
||||
`New-NetFirewallRule -Profile Any -DisplayName "Open Port 135 RPC" -Direction Inbound -Protocol TCP -LocalPort 135` открыть in-порт \
|
||||
`Get-NetFirewallRule | Where-Object {$_.DisplayName -match "135"}` найти правило по имени \
|
||||
`Get-NetFirewallPortFilter | where LocalPort -like 80` найти действующие правило по номеру порта
|
||||
|
||||
`Get-NetFirewallRule -Enabled True -Direction Inbound | select -Property DisplayName,`
|
||||
`@{Name='Protocol';Expression={($_ | Get-NetFirewallPortFilter).Protocol}},`
|
||||
`@{Name='LocalPort';Expression={($_ | Get-NetFirewallPortFilter).LocalPort}},`
|
||||
`@{Name='RemotePort';Expression={($_ | Get-NetFirewallPortFilter).RemotePort}},`
|
||||
`@{Name='RemoteAddress';Expression={($_ | Get-NetFirewallAddressFilter).RemoteAddress}},`
|
||||
`Enabled,Profile`
|
||||
|
||||
### Performance
|
||||
`(Get-Counter -ListSet *).CounterSetName` вывести список всех доступных счетчиков производительности в системе \
|
||||
`(Get-Counter -ListSet *memory*).Counter` все счетчики, включая дочернии, поиск по wildcard-имени \
|
||||
`Get-Counter "\Memory\Available MBytes"` объем свободной оперативной памяти \
|
||||
`Get-Counter -cn $srv "\LogicalDisk(*)\% Free Space"` % свободного места на всех разделах дисков \
|
||||
`(Get-Counter "\Process(*)\ID Process").CounterSamples` \
|
||||
`Get-Counter "\Processor(_Total)\% Processor Time" –ComputerName $srv -MaxSamples 5 -SampleInterval 2` 5 проверок каждые 2 секунды \
|
||||
`Get-Counter "\Процессор(_Total)\% загруженности процессора" -Continuous` непрерывно \
|
||||
`(Get-Counter "\Процессор(*)\% загруженности процессора").CounterSamples`
|
||||
|
||||
### ThreadJob
|
||||
`Install-Module -Name ThreadJob` установить модуль \
|
||||
`Get-Module ThreadJob -list` \
|
||||
`(Start-ThreadJob {ping ya.ru}) | Out-Null` создать фоновую задачу \
|
||||
`while ($True){` \
|
||||
`$status = @((Get-Job).State)[-1]` # отобразить статус последней [-1] фоновой задачи \
|
||||
`if ($status -like "Completed"){` # если Completed \
|
||||
`Get-Job | Receive-Job` # отобразить вывод, после каждого запроса результат удаляется (Get-Job).HasMoreData -eq $False \
|
||||
`Get-Job | Remove-Job -Force` # удалить все задачи \
|
||||
`break` # остановить цикл \
|
||||
`}}` \
|
||||
`Get-Job | Receive-Job -Keep` отобразить и не удалять вывод (-Keep)
|
||||
|
||||
### Event
|
||||
`Register-EngineEvent` регистрирует подписку на события PowerShell или New-Event и создает задание (Get-Job) \
|
||||
`Register-EngineEvent -SourceIdentifier PowerShell.Exiting -Action {` \
|
||||
`$date = Get-Date -f hh:mm:ss; (New-Object -ComObject Wscript.Shell).Popup("PowerShell Exit: $date",0,"Action",64)` \
|
||||
`}` \
|
||||
`-SupportEvent` не выводит результат регистрации события на экран, в Get-EventSubscriber и Get-Job \
|
||||
`-Forward` перенаправляет события из удаленного сеанса (New-PSSession) в локальный сеанс
|
||||
|
||||
`Register-ObjectEvent` регистрирует подписку на события объектов .NET \
|
||||
`$System_Obj | Get-Member -MemberType Event` отобразить список всех событий объекта \
|
||||
`Register-ObjectEvent -InputObject $System_Obj -EventName Click -SourceIdentifier SrvListClick -Action {` \
|
||||
`Write-Host $System_Obj.Text` \
|
||||
`}` \
|
||||
`Get-EventSubscriber` список зарегистрированных подписок на события в текущей сессии \
|
||||
`Unregister-Event -SourceIdentifier SrvListClick` удаляет регистрацию подписки на событие по имени события (или все *) \
|
||||
`Remove-Job -Name SrvListClick` удаляет задание \
|
||||
`-InputObject` объект или переменная, хранящая объект \
|
||||
`-EventName` событие (например, Click,MouseClick) \
|
||||
`-SourceIdentifier` название регистрируемого события \
|
||||
`-Action` действие при возникновении события
|
||||
|
||||
### Out-File
|
||||
`Read-Host –AsSecureString | ConvertFrom-SecureString | Out-File "$env:userprofile\desktop\password.txt"` писать в файл. Преобразовать пароль в формат SecureString с использованием шифрования Windows Data Protection API (DPAPI)
|
||||
|
||||
### Get-Content (gc/cat/type)
|
||||
`$password = gc "$env:userprofile\desktop\password.txt" | ConvertTo-SecureString` читать хэш пароля из файла с помощью ключей, хранящихся в профиле текущего пользователя, который невозможно прочитать на другом копьютере
|
||||
|
||||
### AES Key
|
||||
`$AESKey = New-Object Byte[] 32` \
|
||||
`[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey)` \
|
||||
`$AESKey | Out-File "C:\password.key"` \
|
||||
`$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")` расшифровать пароль на втором компьютере
|
||||
|
||||
### Credential
|
||||
`$Cred = Get-Credential` сохраняет креды в переменные $Cred.Username и $Cred.Password \
|
||||
`$Cred.GetNetworkCredential().password` извлечь пароль \
|
||||
`cmdkey /generic:"TERMSRV/$srv" /user:"$username" /pass:"$password"` добавить указанные креды аудентификации на на терминальный сервер для подключения без пароля \
|
||||
`mstsc /admin /v:$srv` авторизоваться \
|
||||
`cmdkey /delete:"TERMSRV/$srv"` удалить добавленные креды аудентификации из системы \
|
||||
`rundll32.exe keymgr.dll,KRShowKeyMgr` хранилище Stored User Names and Password \
|
||||
`Get-Service VaultSvc` служба для работы Credential Manager \
|
||||
`Install-Module CredentialManager` установить модуль управления Credential Manager к хранилищу PasswordVault из PowerShell \
|
||||
`[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls11,Tls12'` для устаноки модуля \
|
||||
`Get-StoredCredential` получить учетные данные из хранилища Windows Vault \
|
||||
`Get-StrongPassword` генератор пароля \
|
||||
`New-StoredCredential -UserName test -Password "123456"` добавить учетную запись \
|
||||
`Remove-StoredCredential` удалить учетную запись \
|
||||
`$Cred = Get-StoredCredential | where {$_.username -match "admin"}` \
|
||||
`$pass = $cred.password` \
|
||||
`$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass)` \
|
||||
`[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)`
|
||||
|
||||
### Items
|
||||
`Test-Path $path` проверить доступность пути \
|
||||
`Get-Location` отобразить текущие месторасположение (Alias: pwd/gl) \
|
||||
`Set-Location $path` перемещение по каталогам (Alias: cd/sl) \
|
||||
`Invoke-Item $path` открыть файл (Alias: ii/start) \
|
||||
`Get-ChildItem $path *.exe* -Recurse` отобразить содержимое каталога (Alias: ls/dir) и дочерних каталогов (-Recurse) \
|
||||
`Get-ItemProperty $env:userprofile\Documents\dns-list.txt | select FullName,Directory,Name,BaseName,Extension` свойтсва файла \
|
||||
`Get-ItemProperty -Path $path\* | select FullName,CreationTime,LastWriteTime` свойства файлов содержимого директории, дата их создания и последнего изменения \
|
||||
`New-Item -Path "C:\test\" -ItemType "Directory"` создать директорию (Alias: mkdir/md) \
|
||||
`New-Item -Path "C:\test\file.txt" -ItemType "File" -Value "Добавить текст в файл"` создать файл \
|
||||
`"test" > "C:\test\file.txt"` заменить содержимое \
|
||||
`"test" >> "C:\test\file.txt"` добавить строку в файл \
|
||||
`New-Item -Path "C:\test\test\file.txt" -Force` ключ используется для создания отсутствующих в пути директорий или перезаписи файла если он уже существует \
|
||||
`Move-Item` перемещение объектов (Alias: mv/move) \
|
||||
`Remove-Item -Recurse` рекурсивное удаление, без запроса подверждения если в каталоге находятся файлы (Alias: rm/del) \
|
||||
`Remove-Item 'C:\test\*'` удаление файлов внутри каталога \
|
||||
`Rename-Item "C:\test\*.*" "*.jpg"` переименовать файлы по маске (Alias: ren) \
|
||||
`Copy-Item` копирование файлов и каталогов (Alias: cp/copy) \
|
||||
`Copy-Item -Path "C:\*.txt" -Destination "C:\test\"` знак '\' в конце Destination используется для переноса папки внутрь указанной, отсутствие, что это новое имя директории \
|
||||
`Copy-Item -Path "C:\*" -Destination "C:\test\" -Include '*.txt','*.jpg'` копировать объекты с указанным расширением (Include) \
|
||||
`Copy-Item -Path "C:\*" -Destination "C:\test\" -Exclude '*.jpeg'` копировать объекты, за исключением файлов с расширением (Exclude) \
|
||||
`$log = Copy-Item "C:\*.txt" "C:\test\" -PassThru` вывести результат копирования (логирование) в переменную, можно забирать строки с помощью индексов $log[0].FullName
|
||||
|
||||
`$date = (Get-Date).AddDays(-30)` \
|
||||
`$files = (Get-ChildItem $path).FullName` \
|
||||
`$creations = Get-ItemProperty $files | select FullName,LastWriteTime` \
|
||||
`foreach ($creat in $creations) {` \
|
||||
`if ($creat.LastWriteTime -le $date) {` \
|
||||
`Remove-Item $creat.FullName -Recurse` \
|
||||
`}` \
|
||||
`}`
|
||||
|
||||
### Local User and Group
|
||||
`Get-LocalUser` список пользователей \
|
||||
`Get-LocalGroup` список групп \
|
||||
`New-LocalUser "1C" -Password $Password -FullName "1C Domain"` создать пользователя \
|
||||
`Set-LocalUser -Password $Password 1c` изменить пароль \
|
||||
`Add-LocalGroupMember -Group "Administrators" -Member "1C"` добавить в группу Администраторов \
|
||||
`Get-LocalGroupMember "Administrators"` члены группы
|
||||
|
||||
### SMB
|
||||
`Get-SmbServerConfiguration` \
|
||||
`Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force` отключить протокол SMB v1 \
|
||||
`Get-WindowsFeature | Where-Object {$_.name -eq "FS-SMB1"} | ft Name,Installstate` модуль ServerManager, проверить установлен ли компонент SMB1 \
|
||||
`Install-WindowsFeature FS-SMB1` установить SMB1 \
|
||||
`Uninstall-WindowsFeature –Name FS-SMB1 –Remove` удалить SMB1 клиента (понадобится перезагрузка) \
|
||||
`Get-WindowsOptionalFeature -Online` модуль DISM, для работы с компонентами Windows \
|
||||
`Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove` удалить SMB1 \
|
||||
`Set-SmbServerConfiguration –AuditSmb1Access $true` включить аудит SMB1 \
|
||||
`Get-SmbConnection` список активных сессий и используемая версия SMB (Dialect) \
|
||||
`Get-SmbOpenFile | select ClientUserName,ClientComputerName,Path,SessionID` список открытых файлов \
|
||||
`Get-SmbShare` список сетевых папок \
|
||||
`New-SmbShare -Name xl-share -Path E:\test` создать новую общую сетевую папку (расшарить) \
|
||||
`-EncryptData $True` включить шифрование SMB \
|
||||
`-Description` имя в сетевом окружении \
|
||||
`-ReadAccess "domain\username"` доступ на чтение \
|
||||
`-ChangeAccess` доступ на запись \
|
||||
`-FullAccess` полный доступ \
|
||||
`-NoAccess ALL` нет прав \
|
||||
`-FolderEnumerationMode [AccessBased | Unrestricted]` позволяет скрыть в сетевой папке объекты, на которых у пользователя нет доступа с помощью Access-Based Enumeration (ABE) \
|
||||
`Get-SmbShare xl-share | Set-SmbShare -FolderEnumerationMode AccessBased` ключить ABE для всех расшаренных папок \
|
||||
`Remove-SmbShare xl-share -force` удалить сетевой доступ (шару) \
|
||||
`Get-SmbShareAccess xl-share` вывести список доступов безопасности к шаре \
|
||||
`Revoke-SmbShareAccess xl-share -AccountName Everyone –Force` удалить группу из списка доступов \
|
||||
`Grant-SmbShareAccess -Name xl-share -AccountName "domain\XL-Share" -AccessRight Change –force` изменить/добавить разрешения на запись (Full,Read) \
|
||||
`Grant-SmbShareAccess -Name xl-share -AccountName "все" -AccessRight Change –force` \
|
||||
`Block-SmbShareAccess -Name xl-share -AccountName "domain\noAccess" -Force` принудительный запрет \
|
||||
`New-SmbMapping -LocalPath X: -RemotePath \\$srv\xl-share -UserName support4 -Password password –Persistent $true` подключить сетевой диск \
|
||||
`-Persistent` восстановление соединения после отключения компьютера или сети \
|
||||
`-SaveCredential` позволяет сохранить учетные данные пользователя для подключения в диспетчер учетных данных Windows Credential Manager \
|
||||
`Stop-Process -Name "explorer" | Start-Process -FilePath "C:\Windows\explorer.exe"` перезапустить процесс для отображения в проводнике \
|
||||
`Get-SmbMapping` список подключенных сетевых дисков \
|
||||
`Remove-SmbMapping X: -force` отмонтировать сетевой диск \
|
||||
`$CIMSession = New-CIMSession –Computername $srv` создать сеанс CIM (аудентификация на SMB) \
|
||||
`Get-SmbOpenFile -CIMSession $CIMSession | select ClientUserName,ClientComputerName,Path | Out-GridView -PassThru | Close-SmbOpenFile -CIMSession $CIMSession -Confirm:$false –Force` закрыть файлы (открыть к ним сетевой доступ)
|
||||
|
||||
### Get-Acl
|
||||
`(Get-Acl \\$srv\xl-share).access` доступ ACL на уровне NTFS \
|
||||
`Get-Acl C:\Drivers | Set-Acl C:\Distr` скопировать NTFS разрешения с одной папки и применить их на другую
|
||||
|
||||
### NTFSSecurity
|
||||
`Install-Module -Name NTFSSecurity -force` \
|
||||
`Get-Item "\\$srv\xl-share" | Get-NTFSAccess` \
|
||||
`Add-NTFSAccess -Path "\\$srv\xl-share" -Account "domain\xl-share" -AccessRights Fullcontrol -PassThru` добавить \
|
||||
`Remove-NTFSAccess -Path "\\$srv\xl-share" -Account "domain\xl-share" -AccessRights FullControl -PassThru` удалить \
|
||||
`Get-ChildItem -Path "\\$srv\xl-share" -Recurse -Force | Clear-NTFSAccess` удалить все разрешения, без удаления унаследованных разрешений \
|
||||
`Get-ChildItem -Path "\\$srv\xl-share" -Recurse -Force | Enable-NTFSAccessInheritance` включить NTFS наследование для всех объектов в каталоге
|
||||
|
||||
### Out-Gridview
|
||||
`Get-Service -cn $srv | Out-GridView -Title "Service $srv" -OutputMode Single –PassThru | Restart-Service` перезапустить выбранную службу
|
||||
|
||||
### wshell
|
||||
`$wshell = New-Object -ComObject Wscript.Shell` \
|
||||
`$Output = $wshell.Popup("Выберите действие?",0,"Заголовок",4)` \
|
||||
`if ($output -eq 6) {"yes"} elseif ($output -eq 7) {"no"} else {"no good"}`
|
||||
|
||||
`Type:` \
|
||||
`0` ОК \
|
||||
`1` ОК и Отмена \
|
||||
`2` Стоп, Повтор, Пропустить \
|
||||
`3` Да, Нет, Отмена \
|
||||
`4` Да и Нет \
|
||||
`5` Повтор и Отмена \
|
||||
`16` Stop \
|
||||
`32` Question \
|
||||
`48` Exclamation \
|
||||
`64` Information
|
||||
|
||||
`Output:` \
|
||||
`-1` Timeout \
|
||||
`1` ОК \
|
||||
`2` Отмена \
|
||||
`3` Стоп \
|
||||
`4` Повтор \
|
||||
`5` Пропустить \
|
||||
`6` Да \
|
||||
`7` Нет
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue