PowerShell WindowsStyle-隐藏在Windows 10上工作,但不在Windows 7上工作
我正在制作一个使用Start Process cmdlet的应用程序 使用-WindowStyle Hidden(或Minimized等)启动进程对Windows 7上的Docker QuickStart终端这一特定应用程序链接没有影响。我正在使用Docker工具箱而不是Docker for WindowsPowerShell WindowsStyle-隐藏在Windows 10上工作,但不在Windows 7上工作,windows,powershell,powershell-2.0,powershell-5.0,Windows,Powershell,Powershell 2.0,Powershell 5.0,我正在制作一个使用Start Process cmdlet的应用程序 使用-WindowStyle Hidden(或Minimized等)启动进程对Windows 7上的Docker QuickStart终端这一特定应用程序链接没有影响。我正在使用Docker工具箱而不是Docker for Windows Start-Process -WindowStyle Hidden -FilePath "$env:appdata\Microsoft\Windows\Start Menu\Programs
Start-Process -WindowStyle Hidden -FilePath "$env:appdata\Microsoft\Windows\Start Menu\Programs\Docker\Docker Quickstart Terminal.lnk"
它可以毫无问题地启动应用程序,但与Windows 10不同,它不会隐藏应用程序。我很困惑,因为正常的快捷链接(Chrome和Internet Explorer)和其他应用程序在这两个平台上都可以正常启动和隐藏/最小化。唯一的问题是这个特殊的快捷链接
我不确定这是否与PowerShell版本、Windows 7上的2.0版本和Windows 10上的5.0版本有关
有没有人经历过类似的问题?任何帮助都将不胜感激。Docker快捷方式启动另一个bash.exe并启动另一个bash.exe。
Bash内置于windows10中,但不在以前版本的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接口李>
- 类用于按原样传递参数字符串
-ArgumentList run.sh
,因为我需要它来运行shell脚本,然后自己退出。作为带引号的字符串:$psi.Arguments='param1 param2“param in quotes”
,但请注意,它会替换整个参数字符串,因此您可能希望从$link将其添加到现有的参数字符串中。