PowerShell WindowStyle - 隐藏在Windows 10上但不能在Windows上工作7

问题描述:

我正在制作一个使用Start-Process cmdlet的应用程序。PowerShell WindowStyle - 隐藏在Windows 10上但不能在Windows上工作7

使用-WindowStyle启动进程隐藏(或最小化等)对此特定应用程序链接,Windows 7上的Docker QuickStart Terminal没有影响。我正在使用Docker Toolbox代替Docker for Windows。

Start-Process -WindowStyle Hidden -FilePath "$env:appdata\Microsoft\Windows\Start Menu\Programs\Docker\Docker Quickstart Terminal.lnk" 

它启动没有问题的应用程序,但不像在Windows 10,我很困惑不隐藏应用程序,因为正常的快捷方式链接(Chrome和Internet Explorer)和其他应用程序启动和隐藏/最大限度地减少对正常这两个平台。唯一的问题是这个特定的快捷方式链接。

我不能确定这是否是与PowerShell的版本,2.0在Windows 7和5.0在Windows 10

任何人都经历了类似的问题相关的问题?任何帮助将不胜感激。

Docker快捷方式启动bash.exe,启动另一个启动另一个bash.exe的bash.exe。
Bash内置在Windows 10中,但不在以前的Windows版本中,所以我想这就是原因。

让我们来解析快捷方式文件,手动启动它的目标:

function runProgramShortcutHidden($relativePath) { 
    $programsMenu = [Environment]::GetFolderPath([Environment+SpecialFolder]::Programs) 
    $fullPath = Join-Path $programsMenu $relativePath 

    $linkDir = (New-Object -com Shell.Application).NameSpace((Split-Path $fullPath)) 
    $link = $linkDir.ParseName((Split-Path -leaf $fullPath)).GetLink 

    $psi = New-Object Diagnostics.ProcessStartInfo 
    $psi.FileName = $link.Path 
    $psi.Arguments = $link.Arguments 
    $psi.WorkingDirectory = $link.WorkingDirectory 
    $psi.WindowStyle = [Diagnostics.ProcessWindowStyle]::Hidden 

    [Diagnostics.Process]::Start($psi) >$null 
} 

用法:

runProgramShortcutHidden 'Docker\Docker Quickstart Terminal.lnk' 

注:

  • 的Unicode在快捷方式的目标路径,因为该代码使用支持ShellLink接口;
  • System.Diagnostics.Process class用于传递参数字符串。
+0

嗨,我错过了我使用Docker Toolbox而不是Docker for Windows的事实。我认为Docker Toolbox使用非内置的Git Bash。我将更多地学习PowerShell(我知道的很少),以便在我回来接受您的答案之前了解您刚写的内容。谢谢。 –

+0

嗨,所以它适用于Windows 10,但不是Windows 7,不包含'GetLink',http://imgur.com/a/xqOmn –

+0

嗨,非常感谢你的回应,我无法验证现在回答测试此机器现在不可用。我明天会验证它。还有一个问题,如果我想将run.sh作为ArgumentList的参数,我可以添加这行'$ psi.ArgumentList = run.sh'? –