【问题标题】:Modify Chrome window position settings (in "preferences" file) using Powershell使用 Powershell 修改 Chrome 窗口位置设置(在“首选项”文件中)
【发布时间】:2015-09-06 23:25:28
【问题描述】:

我们有一个带有两个屏幕的信息亭,一个用于与用户互动,第二个仅用于一些促销内容。我需要确保 Chrome 在启动时始终在特定网页的第二个屏幕上打开。它在 Windows 机器上运行...

我一直在寻找首先使用任务计划程序打开 Chrome 并将窗口移动到第二个屏幕的方法。但经过一些研究和测试后,我最终使用 Powershell 脚本提供的 URL 以“信息亭模式”(有用的东西)打开 Chrome。值得庆幸的是,如果我在第二个屏幕上关闭 Chrome 窗口,它会记住该位置,并且下次打开 Chrome 窗口时,它将被放置在“我离开它的地方”。但是,我想确保即使发生一些错误,Chrome“首选项”文件(在 AppData 文件夹中)也会始终将位置设置为我的第二个屏幕。

我遇到了 (Change Chrome Settings via Powershell),但我仍然无法在启动时(在打开 Chrome 窗口之前)编写工作代码来修改此文件。

任何帮助将不胜感激!

【问题讨论】:

  • 如果您无法编写一个有效的文件,到目前为止您有什么可以帮助您的?
  • 为什么不直接备份设置文件然后恢复呢?
  • 这正是我的想法(我认为在这种情况下它会是更好的解决方案的原因很少),所以我放弃了以前的解决方案。 @Matt:我能够替换文件的内容,但不知道如何替换整个文件。听起来很简单“获取文件并用这个替换它”,但我在这里或其他任何地方都没有找到答案。

标签: windows google-chrome powershell


【解决方案1】:

我遇到了同样的问题,但我的任务是让 Chrome 自动打开 .ica 文件。

我为此编写了以下脚本:

get-childitem -path "$env:systemdrive\Users" | foreach-object {

  $path = "$env:systemdrive\Users\$_\appdata\local\google\chrome\user data\default\preferences"

  if(test-path $path){
    $prefs = get-content $path | convertfrom-json 
    if($prefs){

      if(!($prefs.download.extensions_to_open)){
        $prefs.download | add-member -name "extensions_to_open" -value "ica" -MemberType NoteProperty #-Force
      } else {
        if(!($prefs.download.extensions_to_open -match "ica")){
          write-host "No ICA"
          $prefs.download.extensions_to_open = $prefs.download.extensions_to_open + ":ica"
        } else {
          write-host "ICA file type will already auto-open, ignoring."
        }
      }
      $prefs | convertto-json -depth 100 | out-file $path -encoding utf8
    }
  }

}

您应该能够重构它。它将所有内容写入机器上每个用户的首选项文件并且运行良好。

为了节省你一些时间,我已经为你重构了脚本:

get-childitem -path "$env:systemdrive\Users" | foreach-object {

  $path = "$env:systemdrive\Users\$_\appdata\local\google\chrome\user data\default\preferences"

  if(test-path $path){
    $prefs = get-content $path | convertfrom-json 
    if($prefs){

        $prefs.browser.window_placement.left = 500 # pixel value 
        $prefs.browser.window_placement.top = 100 # pixel value 
        $prefs.browser.window_placement.bottom = 100 # pixel value 
        $prefs.browser.window_placement.right = 100 # pixel value 
        $prefs.browser.window_placement.maximized = $false # $true or $false

      $prefs | convertto-json -depth 100 | out-file $path -encoding utf8
    }
  }

}

脚本编写愉快!

【讨论】:

    【解决方案2】:

    Dan 的回答对写入首选项文件非常有帮助。我确实注意到,如果您没有从 get-content 指定编码,那么每次运行它都会增加首选项文件的大小。更改以下行:

    $prefs = get-content $path -encoding utf8| convertfrom-json 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2019-12-14
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2022-12-24
      • 2017-09-06
      相关资源
      最近更新 更多