Обновить
5

Пользователь

1
Подписчики
Отправить сообщение

ну дык, как писали выше oh-my-posh в помощь

В том PSReadLine, что идёт из коробки была неприятная багуля с заглавными буквами, после сноса и установки 2.2.6 всё что тут указано у меня работает из коробки, ничего не настраивал.

  • К сожалению, в зависимости от локализации, значение ObjectClass может быть и “User”, и “Пользователь”. Я не нашел способа точно определять это значение, поэтому “прибил гвоздями” оба варианта.

В свое время столкнувшись с зоопарком версий винды, очень не понравились те, на которых отсутствовал командлет Get-LocalGroupMember. Поэтому пришлось допилить свои, и они однозначно возвращают класс User независимо от локализации

Function Get-LocalAdminsGroupMember{
    Param(
        [string]$ComputerName = $env:ComputerName
    )
    $obj = [ADSI]"WinNT://$ComputerName"
    $GroupSid = "S-1-5-32-544"
    $AdminGroupSid = New-Object System.Security.Principal.SecurityIdentifier($GroupSid)
    $AdminGroupName = $AdminGroupSid.Translate([System.Security.Principal.NTAccount]).Value -replace ".+\\"
    if ($obj){
        $admingroup = $obj.Children |  Where-Object {$_.name -eq $AdminGroupName}
        if ($admingroup){
            $AdminGroupName = $admingroup | Select-Object -ExpandProperty Name
            $members = $admingroup.Invoke("Members") 
            if ($Members){
                Foreach ($Member in $Members){
                    $Account = Get-GroupMember -Member $Member -ComputerName $ComputerName
                    if ($Account){
                        $account | Add-Member -Type NoteProperty -Name GroupName -Value $AdminGroupName
                        $Accounts += @($Account)
                    }
                }
            }
        }
    }
    Return $Accounts
}
Function Get-GroupMember{
    Param (
        $Member,
        $ComputerName
        )
        $AdsPath=$member.GetType().Invokemember("ADSPath","GetProperty",$null,$member,$null)
        $Domain=($AdsPath -split "/")[-2]
        $SamAccountName=($AdsPath -split "/")[-1]
        $AccountType = if($Domain -eq $ComputerName){"Local"}else{"Domain"}
        
        $ObjectSid = $member.GetType().Invokemember("objectsid","GetProperty",$null,$member,$null)
        $Sid = [System.Security.Principal.SecurityIdentifier]::new($objectsid,0).value
        $Class = $member.GetType().Invokemember("Class","GetProperty",$null,$member,$null)

        $Account = [pscustomobject]@{
            Name = $SamAccountName
            SID = $Sid
            Class = $Class
            AccountType=$AccountType
            ComputerName = $ComputerName
            
        }
        if ($Class -eq "User"){
            [bool]$enabled = if (($member.GetType().Invokemember("Userflags","GetProperty",$null,$member,$null) -band 0x2) -ne 0x2){$true}else{$false}
            $Account |Add-Member -MemberType NoteProperty -Name Enabled -Value $Enabled -Force
        }
        if ($Account){
            Return $Account 
        }

}

Ну и ставить Module Active Directory на все компы мне кажется не лучшей идеей, можно использовать [ADSI], например для поиска ManagedBy

$domain = ([adsi]"LDAP://rootDSE").get("defaultNamingContext")
$adSearcher = New-Object System.DirectoryServices.DirectorySearcher($Domain)
$adSearcher.Filter = "(&(samAccountName=$("$env:computername$")))"
$ADObject = $adSearcher.FindOne().GetDirectoryEntry()
$check_local_admin_rights = $ADObject.managedBy

throw в фоновом скрипте, тоже мне кажется не лучшим решением (хотя это субъективно), лучше добавлять какое-то логирование (чтобы понимать что произошло) и тот же break или exit

ну и к вышедобавленному, добавлю, что возможность подключаться к теневой сессии, раз уж мы за собой не подтираем, лучше настраивать через GPO для целевых компьютеров

Как использовать календарь в teams, если нет возможности продлить подписку office 365?

ну да, portknocking

хорошо, когда IP известны заранее...

смена порта на нестандартный не спасает, очень активно ломятся и через нестандартный

а можно про сверхкомплектные зубы поподробней? У меня сколько себя помню под языком бугры, думал у всех так. А лет в 30 вдруг узнал, что еще один ряд зубов, и якобы его нужно удалять, но мне он всю жизнь не мешал, да и сейчас не особо мешает. Полез гуглить что-то подобное, но там фотки все с прорезанными зубами.







Горела сельдь, от солнца и от звезд,
Горела сельдь, как шлюховоз
Горела сельдь, ты чувствовал тепло,
Горела сельдь, сметана злооооооо…

Ну и еще есть funny metal
спасибо, добрый человек, teamviewer достал в конец, MSRA без домена муторно, а quick assist похоже то, что мне нужно.
попробуй tools->Options->Log->Create new log file every day
высылание только фэйлов чревато тем, что если произойдет, например, проблема с почтой (к примеру, гмыл сочтет ненормальной активностью и заблочит), то будешь оставаться в неведении, что все хорошо. Тут нужно какое-нибудь дублирование, например мониторинг того, что новый бэкап или лог сделались.
dbcc proccache

вот на картинке правильно, а в описании нет.
Более того, dbcc freeproccache очищает кэш во всех базах данных, а если мы выполняем данный план для определенных баз, то и кэш чистить лучше для отдельных баз
DBCC FLUSHPROCINDB(<database_id>) 

Чтобы узнать database_id используем
select name, database_id from sys.databases 
ну первый блин комом, я немного поболе почитал, есть чего добавить, немного позднее, думаю, отредактирую.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность