如何在加载窗口之前在powershell中永久设置窗口高度/宽度/颜色首选项?

时间:2017-05-06 04:20:18

标签: powershell

我已经知道如何修改个人资料中的窗口设置,但更改会在窗口显示后生效,因此会出现默认设置的第二个时间。

我也想通过命令行来做这个,所以我只需要运行一个windows"初始化脚本"在全新安装并永久生效...因此,使用左上角的GUI也是不可接受的。

1 个答案:

答案 0 :(得分:1)

  • 在新系统中,新用户从Default/Default User
  • 继承设置
  • 控制台设置存储在注册表中 HKCU\Console和子项
  • 存储偏离标准的PowerShell控制台设置 子项:
HKEY_CURRENT_USER\console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
HKEY_CURRENT_USER\console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe

除此之外,PowerShell的任何快捷方式文件也可以存储这些设置。

要查看在Cmd窗口中运行的当前设置:

reg query hkcu\console

在PowerShell中运行:

gci hkcu:Console|where Name -like '*powershell*'|ft -auto

ScreenBufferSize和WindowSize是32位值(REG_DWORD),由16位高度+ 16位宽度值组成。

我写了这批来解码尺寸:

:: ConsoleSizes.cmd ::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
setlocal
echo Window_X*Y_^|_Buffer_X*Y_^|_App-key_____________________________
for /F "tokens=1-2,*" %%A in (
'reg query hkcu\console /s^|findstr "\ ScreenBufferS WindowS"') do (
if "%%B" NEQ "REG_DWORD" (set "HKCUCon=%%A %%B %%C"&set "SBS="&SET "WS=")
if "%%A" EQU "ScreenBufferSize" set "SBS=%%C"
if "%%A" EQU "WindowSize" set "WS=%%C" & call :display)
goto :eof
:display
set /A "WSW=WS&0xffff, WSH=WS>>16"
set "WSW=     %WSW%"&set "WSH=%WSH%     "
set /A "SBW=SBS&0xffff, SBH=SBS>>16"
set "SBW=     %SBW%"&set "SBH=%SBH%     "
set "HKCUCon=%HKCUCon:HKEY_CURRENT_USER=HKCU%"
echo/%WSW:~-5%*%WSH:~,5%^|%SBW:~-5%*%SBH:~,5% ^| %HKCUCon%

缩短样本输出:

Window_X*Y_|_Buffer_X*Y_|_App-key_____________________________
   80*25   |    0*0     | HKCU\console
  132*60   |  132*3000  | HKCU\console\%SystemRoot%_System32_cmd.exe
  120*50   |  120*3000  | HKCU\console\%SystemRoot%_system32_diskpart.exe
  120*50   |  120*300   | HKCU\console\%SystemRoot%_system32_help.exe
  120*50   |  120*3000  | HKCU\console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
  120*50   |  120*3000  | HKCU\console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe
  120*50   |  120*3050  | HKCU\console\Bitvise ansi terminal
  132*50   |  132*350   | HKCU\console\Bitvise bvterm terminal
  120*50   |  120*3050  | HKCU\console\Bitvise xterm terminal
  132*50   |  132*50    | HKCU\console\C:_Program Files (x86)_Far_Far.exe
  120*50   |  120*50    | HKCU\console\C:_Program Files (x86)_Kinesics_Text_Editor_x64_k.exe
  252*98   |  252*98    | HKCU\console\C:_Program Files_Far_Far.exe

所以简短的回答是:在默认用户注册表配置单元中编辑控制台。

此外,以PowerShell为目标的快捷方式文件会存储自己的ScreenBufferSize / WindowSize值。