标签: powershell

使用 powershell 在 Windows 10 中设置主显示

我的办公室有一台连接到戴尔显示器的 Windows 10 笔记本电脑。我有远程桌面连接和 ssh 访问权限。

目前,主要显示器是笔记本电脑屏幕。有没有办法将主显示器更改为戴尔显示器?

或者将显示设置更改为镜像。

DisplaySwitch.exe不执行任何操作。也没有错误消息。

PS> Get-WmiObject -Namespace "root\WMI" -Class "WMIMonitorID"

__GENUS                : 2
__CLASS                : WmiMonitorID
__SUPERCLASS           : MSMonitorClass
__DYNASTY              : MSMonitorClass
__RELPATH              : WmiMonitorID.InstanceName="DISPLAY\\BOE06F9\\4&15a49d7&0&UID265988_0"
__PROPERTY_COUNT       : 9
__DERIVATION           : {MSMonitorClass}
__SERVER               : DESKTOP-VFR2B3O
__NAMESPACE            : root\WMI
__PATH                 : \\DESKTOP-VFR2B3O\root\WMI:WmiMonitorID.InstanceName="DISPLAY\\BOE06F9\\4&15a49d7&0&UID265988_0"
Active                 : True
# this is the laptop screen, I want to use display 2
InstanceName           : DISPLAY\BOE06F9\4&15a49d7&0&UID265988_0
ManufacturerName       : {66, 79, 69, 0...}
ProductCodeID          : {48, 54, 70, 57...}
SerialNumberID         : {48, 0, …
Run Code Online (Sandbox Code Playgroud)

display powershell multiple-monitors windows-10

5
推荐指数
0
解决办法
882
查看次数

允许非管理员用户通过快捷方式触发任务计划程序任务

我有一个只能在当前用户下获得许可的软件,并且我需要在我不知道谁将登录的实验室计算机上使用它。我有一个在用户的任务计划程序中运行的脚本每次都可以许可软件的登录,但我不希望每次用户登录时都启动它(该脚本需要一个弹出窗口,所以它是在你面前并且不是一个很好的用户体验,特别是对于那些不这样做的人甚至不打算使用该软件)。我需要任务计划程序,因为它允许我使用 运行 PowerShell 脚本-ExecutionPolicy Bypass,而不提示用户输入管理员凭据。

我想要的是一个可以手动触发任务的快捷方式,这样用户就可以决定是否要许可该软件。不幸的是,它并没有发挥作用。

我用 target: 创建了一个快捷方式C:\Windows\System32\schtasks.exe /run /tn DBCLicenser,其中DBCLicenser是我的任务名称。当我尝试运行快捷方式时,没有任何反应。在命令提示符中运行它,我看到错误:ERROR: Access is denied

拒绝访问

在提升的命令提示符中运行快捷方式成功,但我们的用户不是管理员,因此这不是一个选项。

这里要明确的是,当任务触发器设置为用户登录时,任务会成功运行。我已确保在任务设置中选中“以最高权限运行”和“允许任务按需运行”。

用户似乎没有触发任务的权限。我尝试过手动添加权限C:\Windows\System32\Tasks\%%mytask%%,但此修复似乎在 Windows 10 中不再有效。

windows powershell administrator scheduled-tasks command-line

5
推荐指数
1
解决办法
4646
查看次数

Powershell 历史记录不再持久

Powershell 停止使用其持久历史记录 (Windows 11)。当我启动新的 Powershell 实例时,以前会话中的命令不会显示。一旦我第一次在新会话中使用命令,就可以通过 F8/箭头等来调用它们。

到目前为止我检查/发现的内容:

  • 检查历史文件,C:\Users\[username]\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt我注意到命令不再保存在那里。

  • 一旦我输入命令(Get-PSReadLineOption).HistorySavePath(它返回我在上一个要点中提到的路径),一切都会再次正常工作。已经保存在那里的命令可以通过 F8 等再次访问,并且新命令也会再次保存到历史文件中。

  • powershell -noexit Set-PSReadlineOption -HistorySavePath "C:\Users\admin\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"通过脚本启动 powershell 也可以。

我还没有确切地知道为什么 Powershell 默认情况下不再使用历史文件。据我记得它以前可以工作,但我不确定为什么它停止工作。但从历史文件的内容来看,已经是很久之前的事了。

知道如何让它再次工作,而不需要在每次启动时应用解决方法(例如手动输入“历史记录保存命令”或使用“参数来启动它”)吗?

补充1:

这些命令给出以下输出(注意:使用其中任何一个后,历史记录再次正常工作,命令被保存到历史记录中,并且除了已使用的第一个命令并“重新激活”历史记录之外,可以调用完整内容)

PS C:\> (Get-PSReadlineOption).HistorySaveStyle
SaveIncrementally
PS C:\> (Get-PSReadlineOption).HistoryNoDuplicates
True
PS C:\> (Get-PSReadlineOption).MaximumHistoryCount
4096
Run Code Online (Sandbox Code Playgroud)

补充2:

$PROFILE给我以下输出(该命令不会影响历史记录的行为)。注意:列出的文件不存在于指定的目录中:

PS C:\> $PROFILE | Get-Member -Type NoteProperty


   TypeName: System.String

Name                   MemberType   Definition
----                   ----------   ----------
AllUsersAllHosts       NoteProperty string AllUsersAllHosts=C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost    NoteProperty string AllUsersCurrentHost=C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    NoteProperty string CurrentUserAllHosts=C:\Users\username\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost NoteProperty string CurrentUserCurrentHost=C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Run Code Online (Sandbox Code Playgroud)

添加 3 …

powershell command-history windows-11

5
推荐指数
1
解决办法
3875
查看次数

在管理员控制台中运行时,WSL 命令不提供输出

当使用用户权限打开控制台时,我可以'wsl -l' etc从命令提示符和 powershell 运行 wsl 命令,没有任何问题。

在非管理控制台中工作的 WSL 命令:
在此输入图像描述

但是,当我从管理员运行的控制台尝试运行 wsl 命令时,该命令不提供输出并立即停止。(此行为与运行的目录无关)

WSL 命令在管理控制台中不起作用:
在此输入图像描述

运行where wsl显示它指向C:\Windows\System32\wsl.exe管理和非管理控制台。

这是 Windows 版本 21H2,内部版本 19044.1766

我需要能够以管理员身份运行 wsl 命令才能执行wsl --update.

powershell cmd.exe windows-10 windows-subsystem-for-linux wsl2

5
推荐指数
0
解决办法
1586
查看次数

如何以编程方式更改 Windows 设置?

以下是 Windows 中的设置类别:

在此输入图像描述

每个都有自己的一组子设置(有时也嵌套),如下图所示: 在此输入图像描述

每当我格式化计算机时,我都会在这里更改很多设置,并且该过程非常乏味且重复,我想将其自动化。

我想知道的是一种以编程方式更改这些设置的方法(通过 c++、powershell、cmd 批处理等)。

我想要一个设置列表以及以编程方式更改它们的相应方法,以便我可以制作一个脚本来执行类似于以下伪代码的操作:

Change-Setting --Setting NightLight --Value On -- Strength 60
Change-Setting --Setting Scale --Value 100
Change-Setting --Setting RefreshRate --Value 144.01
...
Run Code Online (Sandbox Code Playgroud)

我已经搜索过这个,似乎没有很多关于这个主题的信息(这是令人惊讶的,因为它似乎可能是很多人会尝试自动化的东西)。我调查过这篇文章,据说使用 ProcMon 查找注册表更改,然后在激活特定设置(可能不止一个)时检测对注册表进行了哪些更改,然后使用它来更改值我。之后,需要重新启动计算机。

这个过程需要很长时间,甚至很长一段时间是不值得的。当然有更简单的方法来实现我想要的目标吗?

我使用的是 Windows 11。

windows powershell command-line c++ windows-11

5
推荐指数
0
解决办法
940
查看次数

通过 PowerShell/注册表/组策略禁用 Outlook“热门结果”/“在顶部显示最相关的搜索结果”

我无法找到一种方法来通过系统/自动化方法禁用 Microsoft Outlook 搜索选项“在顶部显示最相关的搜索结果”,以便我可以将其部署给所有用户。

该设置通过以下方式在 GUI 中找到:

“文件”->“选项”->“搜索”->“在顶部显示最相关的搜索结果”。

到目前为止我已经尝试过:

组策略

用于配置 Microsoft 365 / Office 等的最新 ADMX 似乎没有配置此选项的选项:

https://admx.help/?Category=Office2016&Policy=outlk16.Office.Microsoft.Policies.Windows::L_HitHighlightingcolor

登记处

在通过 GUI 设置选项时,通过“进程监视器”检查应用程序对注册表的修改后,我修改了以下键,但0没有影响。

Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Search\SearchTopResults

根据下面克里斯蒂的回答,将此密钥添加到以下位置对 Outlook 也没有影响:

Computer\HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0\outlook\Search\SearchTopResults

办公配置工具

办公室配置工具似乎也没有显示在“应用程序首选项”下禁用此选项的任何可能性:

https://config.office.com/deploymentsettings


PS - 正在测试的环境连接到活动目录,并通过现有的“组策略”部署应用策略。

如果有人能够对如何做到这一点提供任何见解,我们将不胜感激。

microsoft-outlook windows-registry powershell microsoft-office group-policy

5
推荐指数
1
解决办法
755
查看次数

为什么会出现重复的网络接口?

在对 PC 上的连接问题进行故障排除时,我注意到Get-NetIPInterface在 PowerShell 上发出命令时每个网络接口都有重复。

请注意每个接口都有一个副本。就连 都是ifIndex一样的。

但我可以得出结论,这些不仅仅是同一接口的“影子”,因为其中一个已启用vEthernet (Ethernet 2)DHCP ,另一个已禁用

PS C:\Windows\system32> Get-NetIPInterface

ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore
------- --------------                  ------------- ------------ --------------- ----     --------------- -----------
37      vEthernet (WSL)                 IPv6                  1500            5000 Enabled  Connected       ActiveStore
21      Ethernet 2                      IPv6                  1500               6 Enabled  Connected       ActiveStore
31      vEthernet (Ethernet 2)          IPv6                  1500              15 Enabled  Connected       ActiveStore
1       Loopback Pseudo-Interface 1     IPv6            4294967295              75 Disabled Connected       ActiveStore
37      vEthernet (WSL) …
Run Code Online (Sandbox Code Playgroud)

networking powershell dhcp windows-10

5
推荐指数
1
解决办法
1137
查看次数

PowerShell 中命令前的与号 (&) 是什么?

我通过输入命令的路径来尝试命令,当我点击 时TAB,发生了这种情况:

C:\> C:\Program Files\KeePassXC\keepass<TAB>
# became this:
C:\> & 'C:\Program Files\KeePassXC\keepassxc-cli.exe'
Run Code Online (Sandbox Code Playgroud)

它只是评估一个字符串吗?至少,我认为是这样,因为路径需要用引号括起来,因为其中有空格,并且不会&出现以下错误:

C:\> 'C:\Program Files\KeePassXC\keepassxc-cli.exe' --help

At line:1 char:50
+ 'C:\Program Files\KeePassXC\keepassxc-cli.exe' --help
+                                                  ~~~~
Unexpected token 'help' in expression or statement.
At line:1 char:1
+ 'C:\Program Files\KeePassXC\keepassxc-cli.exe' --help
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The '--' operator works only on variables or on properties.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken
Run Code Online (Sandbox Code Playgroud)

您能链接到文档吗?谢谢你!


&讨论( 1 , 2 )的线程完全是关于其他事情的(或者我错过了找到连接)。

windows powershell command-line

5
推荐指数
1
解决办法
4820
查看次数

如何在没有 PowerShell 的情况下获得 Windows 终端提示符?

我使用的是 Windows 11。似乎预装了 Windows Terminal。但是,当终端选项卡式界面启动时,我在终端中收到 PowerShell 7 提示。(如果我输入 exit 希望 PowerShell 只是在另一个 shell 上运行,那么整个事情都会退出)

问题

有没有办法只使用普通 shell 启动 Windows 终端?

在此输入图像描述

powershell windows-terminal windows-11

5
推荐指数
1
解决办法
2277
查看次数

是否有清除 PowerShell 屏幕和回滚的快捷方式?

问题

有人知道是否有清除 PowerShell 屏幕和回滚(相当于cls命令)的快捷方式?

通过示例了解更多细节

假设我有这个:
初始状态

我知道有一个Ctrl+L快捷方式,但会留下回滚,这是使用后的状态:
Ctrl + L 之后的状态

我想要的是一个快捷方式,它使我处于使用cls命令后屏幕清晰且不再回滚的状态:
即将运行 cls 命令

cls后的状态

keyboard-shortcuts powershell

5
推荐指数
1
解决办法
498
查看次数