我目前通過.bat文件打開PowerShell腳本。該腳本有一個GUI。我試圖把這個在我的劇本,但它躲到了GUI以及還不停地循環,因爲我想我的GUI,不斷循環:打開PowerShell腳本並隱藏命令提示符,但不是GUI
powershell.exe -WindowStyle Hidden -file c:\script.ps1
我們如何運行沒有命令Promp一個劇本,但也不能掩蓋GUI?如果我們使用.bat文件運行腳本,情況是否如此?謝謝!
我目前通過.bat文件打開PowerShell腳本。該腳本有一個GUI。我試圖把這個在我的劇本,但它躲到了GUI以及還不停地循環,因爲我想我的GUI,不斷循環:打開PowerShell腳本並隱藏命令提示符,但不是GUI
powershell.exe -WindowStyle Hidden -file c:\script.ps1
我們如何運行沒有命令Promp一個劇本,但也不能掩蓋GUI?如果我們使用.bat文件運行腳本,情況是否如此?謝謝!
如果你想隱藏的GUI我已經與下面的本地函數成功背後的控制檯:一旦上述功能已經被添加到您的表格
# .Net methods for hiding/showing the console in the background
Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'
function Show-Console
{
$consolePtr = [Console.Window]::GetConsoleWindow()
# Hide = 0,
# ShowNormal = 1,
# ShowMinimized = 2,
# ShowMaximized = 3,
# Maximize = 3,
# ShowNormalNoActivate = 4,
# Show = 5,
# Minimize = 6,
# ShowMinNoActivate = 7,
# ShowNoActivate = 8,
# Restore = 9,
# ShowDefault = 10,
# ForceMinimized = 11
[Console.Window]::ShowWindow($consolePtr, 4)
}
function Hide-Console
{
$consolePtr = [Console.Window]::GetConsoleWindow()
#0 hide
[Console.Window]::ShowWindow($consolePtr, 0)
}
,只需調用Hide-Console
功能在你的事件:
$OnFormLoad =
{
Hide-Console
}
如果你需要顯示控制檯,也許調試,您可以輕鬆地再次通過調用函數Show-Console
顯示控制檯:
$OnButtonClick =
{
Show-Console
}
有關編號的詳細信息可以傳遞給ShowWindow
您可以根據評論檢查出ShowWindow documentation on MSDN here
更新
感謝這個代碼。我試圖在我的腳本中使用它,但我想在哪裏放置Hide-Console?我的窗體加載看起來像這樣$ objForm.Add_Shown({$ objForm.Activate()})[空] $ objForm.ShowDialog()
要隱藏與此代碼的控制檯,所有你需要做的就是調用Hide-Console
。既然你已經在Shown
事件($objForm.Add_Shown
)的代碼,我們可以簡單地添加另一行調用命令:
更改此:
$objForm.Add_Shown({$objForm.Activate()})
要這樣:
$objForm.Add_Shown({
$objForm.Activate()
Hide-Console
})
當你的表格是Shown
控制檯將被隱藏(如果您想稍後再看,您仍然可以撥打Show-Console
)。
如果您從窗口設置爲最小化的快捷方式運行PowerShell,它會短暫閃爍任務欄中的cmd圖標,但您幾乎不會注意到它。但是,它將在沒有控制檯窗口的情況下啓動PowerShell GUI。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle Hidden -file "C:\path\whatever.ps1"
如果你要開始whatever.ps1第二GUI控制檯窗口沒有它停止在whatever.ps1你需要使用的啓動過程的處理。但是,隱藏-WindowStyle的啓動過程會阻止GUI顯示。刪除-WindowStyle在GUI後面顯示一個命令窗口。但是,如果您使用cmd.exe/k開始處理,它確實可行。
$argumentlist = "/c powershell.exe -file `"c:\path\whatever2.ps1`" -param1 `"paramstring`""
Start-Process cmd.exe -WindowStyle Hidden -ArgumentList $argumentlist
作爲獎勵,如果你開始whatever2。ps1和param()語句,您可以傳遞命名的必需參數。確保它是ps1文件中的第一件事,甚至在組件之前。
param (
[Parameter(Mandatory=$true)]
[string]$var1
)
$argumentlist = "/c powershell.exe -file `"C:\path\whatever2.ps1`" -param1 `"param1string`""
將其放入快捷方式而不是批處理文件中。右鍵單擊桌面上或文件夾窗口中的空白處,單擊新建,快捷方式,粘貼您的行,然後命名它,完成。 – 2016-11-15 19:47:33
謝謝麪條,這工作!我做了這個'%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -file「\\ location \ folder1 \ script.ps1」' – DrixlRey