пятница, 15 августа 2025 г.

keytab для пользователя

```shell
ktutil=/usr/local/bin/ktutil
user=ratner
realm=AVP.RU
pass=$(<~/$user.pass)
kvno=$(ldapsearch -LLL -o ldif-wrap=no -x -H ldaps://avp.ru -D kl\\$user -y ~/$user.pass -b "dc=avp,dc=ru" '(&(sAMAccountName=ratner))' msDS-KeyVersionNumber | grep "msDS-KeyVersionNumber:" | awk '{ print $2}')
echo $kvno
printf "%b" "addent -password -p $user@$realm -k $kvno -e arcfour-hmac\n$pass\nwrite_kt $user.keytab" | $ktutil
printf "%b" "read_kt $user.keytab\nlist" | $ktutil
```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Получить список групп для пользователя

(Get-ADUser $username -Properties "memberof").memberof | ForEach-Object { (Get-ADGroup -Identity "$_").SamAccountName }

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Добавить пользователя в локальну группу

$folder = "c:\Users\Public\Scripts"
$user = "user"
$acl = Get-Acl -Path $folder
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.AddAccessRule($accessRule)
Set-Acl -Path $folder -AclObject $acl

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\Users\Public\Scripts\addrights.ps1"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command "Add-LocalGroupMember -Group Administrators -Member kl\ratner -ErrorAction SilentlyContinue"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Удалить HOME, Gallery Windows 11

Gallery:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}"

Home:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Генератор паролей

alias apg="/usr/bin/apg -n20 -EO0Il1 -a0 -m 8 -x 15 -MNCLs | awk '{ print length, \$0 }' | sort -rn"
Сегенрит 20 паролей, выведет их на экран отсортированных по длине 

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 25 июня 2025 г.

Windows 11 отключить bluetooth гарнитуру

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

$Source = @"     [DllImport("BluetoothAPIs.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]     [return: MarshalAs(UnmanagedType.U4)]     static extern UInt32 BluetoothRemoveDevice(IntPtr pAddress);       public static UInt32 Unpair(UInt64 BTAddress) {        GCHandle pinnedAddr = GCHandle.Alloc(BTAddress, GCHandleType.Pinned);        IntPtr pAddress     = pinnedAddr.AddrOfPinnedObject();        UInt32 result       = BluetoothRemoveDevice(pAddress);        pinnedAddr.Free();        return result;     }  "@    Function Get-BTDevice {      Get-PnpDevice -class Bluetooth |        ?{$_.HardwareID -match 'DEV_'} |           select Status, Class, FriendlyName, HardwareID,              # Extract device address from HardwareID              @{N='Address';E={[uInt64]('0x{0}' -f $_.HardwareID[0].Substring(12))}}  }    ################## Execution Begins Here ################    $BTR       = Add-Type -MemberDefinition $Source -Name "BTRemover"  -Namespace "BStuff" -PassThru  $BTDevices = @(Get-BTDevice) # Force array if null or single item    Do {     If ($BTDevices.Count) {        "`n******** Bluetooth Devices ********`n" | Write-Host        For ($i=0; $i -lt $BTDevices.Count; $i++) {           ('{0,5} - {1}' -f ($i+1), $BTDevices[$i].FriendlyName) | Write-Host        }        $selected = Read-Host "`nSelect a device to remove (0 to Exit)"        If ([int]$selected -in 1..$BTDevices.Count) {           'Removing device: {0}' -f $BTDevices[$Selected-1].FriendlyName | Write-Host           $Result = $BTR::Unpair($BTDevices[$Selected-1].Address)           If (!$Result) {"Device removed successfully." | Write-Host}           Else {"Sorry, an error occured." | Write-Host}        }     }     Else {        "`n********* No devices found ********" | Write-Host     }  } While (($BTDevices = @(Get-BTDevice)) -and [int]$selected)
Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 4 июня 2025 г.

hyper-v saved-critical windows 11

После обновления с 10 на 11 появились в списке ВМ которых на самом деле нет, из менеджера не удаляются

```powershell
$vmname = 'test1'
$VMManagementService = Get-WmiObject -Namespace 'root\virtualization\v2' -Class Msvm_VirtualSystemManagementService
$vmobject = Get-WmiObject -Namespace 'root\virtualization\v2' -Class 'msvm_computersystem' | Where-Object { $_.elementname -match $vmname }
$VMManagementService.DestroySystem($vmobject)
```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Меняется разрешение при выключении экрана

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_800050^1A6FF0E82864B84FCEAD280EFF0E764B\00]
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_800050^1A6FF0E82864B84FCEAD280EFF0E764B\00\00]
"ActiveSize.cx"=dword:00000a00
"ActiveSize.cy"=dword:000005a0
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0
"DwmClipBox.right"=dword:00000a00
"DwmClipBox.bottom"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_2045^DD31C473FFED3913883A19534512E68D\00]
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_2045^DD31C473FFED3913883A19534512E68D\00\00]
"ActiveSize.cx"=dword:00000a00
"ActiveSize.cy"=dword:000005a0
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0
"DwmClipBox.right"=dword:00000a00
"DwmClipBox.bottom"=dword:000005a0


Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Заменить циферки на циферки в кавычечках

Задача сделать так, чтобы 01 стало '01' иначе ансибл считае что 01 = 1
notepad++
suffix: (\d+),
suffix: '\1',
Ищем циферки: (\d+)
Берём найденое (содержимое скобочек) в кавычечки: '\1'

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

вторник, 4 марта 2025 г.

Alt linux в WSL

# ALT Linux в WSL

Нам нужен tar файл из архива:
https://ftp.altlinux.org/pub/distributions/ALTLinux/p11/images/cloud/x86_64/alt-p11-rootfs-systemd-x86_64.tar.xz


```powershell
$distro_name = "alt-p11"
$distro_storage = "c:\vm\_wsl\$($distro_name)"
$distro_tarball = "c:\users\public\iso\alt-p11-rootfs-systemd-x86_64.tar"

7z e c:\users\public\iso\alt-p11-rootfs-systemd-x86_64.tar.xz

wsl --unregister $distro_name
wsl --import $distro_name $distro_storage $distro_tarball
wsl -d alt-p11

```

```bash
apt-get update; apt-get install -y passwd sudo

wsluser=appc
adduser -G wheel $wsluser
echo -e "$wsluser ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$wsluser
passwd $wsluser

cat > /etc/wsl.conf <<EOF
[user]
default=$wsluser

[automount]
enabled = true
mountFsTab = false
root = /mnt/
options = "metadata,umask=22,fmask=11"

[network]
generateHosts = true
generateResolvConf = true
EOF

```

```powershell
wsl --terminate $distro_name
wsl -d $distro_name

```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

четверг, 13 февраля 2025 г.

Не запускается sshd на Windows 10 The process terminated unexpectedly.

Помогло исправить разрешение на 
C:\ProgramData\ssh\logs
Оставил в списке только System и группу Администраторы и 

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 12 февраля 2025 г.

Конвертер Windows DHCP в kea-dhcp4.conf


powershell Convert-WindowsDHCPToKea.ps1 \      -in_xml "/var/tmp/win_dhcp.xml" \      -in_template "/etc/kea/kea-dhcp4.conf" \      -out_confdir "/etc/kea" \      -split "all" \      -out_dhcp4_conf "/etc/kea/kea-dhcp4.conf.json" \      -out_confd "/etc/kea/conf.d"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090