2017-02-16 6 views
2

Start-Process cmdlet을 사용하는 응용 프로그램을 만들고 있습니다.PowerShell WindowStyle - Windows 10에서는 숨기고 Windows에서는 표시하지 않습니다.

-WindowStyle을 통한 시작 프로세스 숨겨진 (또는 최소화 된 프로그램 등)이 Windows 7의 Docker QuickStart Terminal에 영향을 미치지 않습니다. Windows 용 Docker 대신 Docker Toolbox를 사용하고 있습니다.

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

그것은 문제없이 응용 프로그램을 시작하지만, 윈도우 10에 나는 혼란 스러워요 달리 정상 바로 가기 링크 (크롬 및 Internet Explorer) 및 기타 응용 프로그램 출시와 가죽이/올바르게 최소화 할 수 있기 때문에 응용 프로그램을 숨기지 않습니다 두 플랫폼 모두. 유일한 문제는이 바로 가기 링크입니다.

나는이 파워 쉘 버전,

사람이 비슷한 문제를 경험 한 윈도우 10에서 윈도우 7 2.0 및 5.0와 관련된 문제가 있다면 확실 해요? 어떤 도움도 친절하게 감사 할 것입니다.

답변

1

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' 

노트 :

바로 가기의 대상 경로에
  • 유니 코드 사용하기 때문에 지원 ShellLink 인터페이스;
  • System.Diagnostics.Process 클래스는 인수 문자열을 그대로 전달하기 위해 사용됩니다.
+0

안녕하세요, 저는 Docker 대신 Windows 용 Docker Toolbox를 사용하고 있다는 사실을 놓쳤습니다. 나는 Docker Toolbox가 내장되어 있지 않은 Git Bash를 사용한다고 생각한다. 내가 대답을 받아들이 기 전에 방금 쓴 내용을 이해하기 위해 PowerShell에 대해 더 공부할 것입니다. 감사. –

+0

안녕하세요, Windows 10에서는 제대로 작동하지만 Windows 7에서는 'GetLink'가 포함되어 있지 않습니다. http://imgur.com/a/xqOmn –

+0

안녕하십니까, 응답 해 주셔서 대단히 감사합니다. 지금이 기계를 테스트하기위한 대답은 현재 사용할 수 없습니다. 나는 그것을 내일 검증 할 것이다. 한가지 더 질문입니다. run.sh를 ArgumentList의 인자로 사용하려면'$ psi.ArgumentList = run.sh' 라인을 추가 할 수 있습니까? –