Архив метки: windows

Определение текущей раскладки в windows через powershell

PS C:\Users\Work> Function Get-CurrentInputLanguage {
>>     $ScriptBlock = {
>>         Add-Type -AssemblyName System.Windows.Forms
>>         [System.Windows.Forms.InputLanguage]::CurrentInputLanguage
>>     }
>>     $Job = Start-Job -ScriptBlock $ScriptBlock
>>     $Null = Wait-Job -Job $Job
>>     $CurrentLanguage = Receive-Job -Job $Job
>>     Remove-Job -Job $Job
>>     Return $CurrentLanguage
>> }
PS C:\Users\Work>

Вывод при английской раскладке:

PS C:\Users\Work> (Get-CurrentInputLanguage).Culture

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            Английский (США)


PS C:\Users\Work> (Get-CurrentInputLanguage).layoutname
США

Вывод при русской раскладке:

PS C:\Users\Work> (Get-CurrentInputLanguage).Culture

LCID             Name             DisplayName
----             ----             -----------
1049             ru-RU            Русский (Россия)


PS C:\Users\Work> (Get-CurrentInputLanguage).layoutname
Русская
PS C:\Users\Work>

Как узнать код активации Windows из Linux

В «современных» компьютерах код активации windows обычно зашивается производителями в железо. Чтобы узнать код активации, например для переустановки винды, нужно загрузиться с загрузочной флэшки с Linux и выполнить команду:

sudo cat /sys/firmware/acpi/tables/MSDM

Установка SSH-сервера в Windows 10

Всё делается в PowerShell с повышенными привилегиями:

Windows PowerShell
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
                                                                                                                        Попробуйте новую кроссплатформенную оболочку PowerShell (https://aka.ms/pscore6)                                                                                                                                                                PS C:\Windows\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'                                                                                                                                                      
Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent



PS C:\Windows\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


Path          :
Online        : True
RestartNeeded : False



PS C:\Windows\system32> Start-Service sshd
PS C:\Windows\system32> Set-Service -Name sshd -StartupType 'Automatic'
PS C:\Windows\system32> Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled

Name                  Enabled
----                  -------
OpenSSH-Server-In-TCP    True


PS C:\Windows\system32>

Предупреждаю, устанавливаться может довольно долго.

После завершения установки на такой компьютер можно подключаться с других:

ssh username@compname

CMD: замена команды touch для windows

В windows нет команды touch, поэтому нашёл такое решение:

type nul >> test.txt

Если файла небыло, то появится, если был, то содержимое должно остаться прежним. Кто знает варианты лучше — пишите в комментариях.

Решено: Если вдруг перестал работать VPN L2TP под Windows 10

Если случайно у кого-то вдруг на удалёнке в windows 10 перестанет работать VPN, рецепт: в powershell под администратором выполнить:

wusa /uninstall /kb:5009543

дождаться окончания и перезагрузиться, должно помочь.

Python: чтение нажатия кнопок в консоли Windows

import msvcrt
msvcrt.getch()
b’f’
msvcrt.getch()
b’\xe0′
msvcrt.getch()
b’M’
msvcrt.getch()
b’\xe0′
msvcrt.getch()
b’H’
msvcrt.getch()
b’\r’
for i in range(0,5):
… msvcrt.getch()

b’1′
b’f’
b’5′
b’\r’
b’\xe0′

Python: как узнать размер окна терминала консоли в Windows и Linux

Windows

Найдено здесь: https://code.activestate.com/recipes/440694-determine-size-of-console-window-on-windows/

from ctypes import windll, create_string_buffer

# stdin handle is -10
# stdout handle is -11
# stderr handle is -12

h = windll.kernel32.GetStdHandle(-12)
csbi = create_string_buffer(22)
res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)

if res:
    import struct
    (bufx, bufy, curx, cury, wattr,
     left, top, right, bottom, maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
    sizex = right - left + 1
    sizey = bottom - top + 1
else:
    sizex, sizey = 80, 25 # can't determine actual size - return default values

print sizex, sizey

Проверил, работает

Linux

>>> import os
>>> os.get_terminal_size()
os.terminal_size(columns=80, lines=24)
>>> os.get_terminal_size().columns
80
>>> os.get_terminal_size().lines
24
>>>