PowerShell隱藏不顯示窗口的多種方法
啟動PowerShell時隱藏自己的窗口
假如我在計劃任務(wù)中定時通過Powershell.exe來執(zhí)行一個腳本文件,我想隱藏這個窗口,此時我們可以考慮使用PowerShell.exe的選項參數(shù):
-WindowStyle
將窗口樣式設(shè)置為 Normal、Minimized、Maximized 或 Hidden。
PowerShell.exe -WindowStyle Hidden -file '您的腳本.ps1'
在PowerShell啟動其它進(jìn)程時隱藏窗口
這個需求也能理解:
Start-Process notepad.exe -WindowStyle Hidden
上面的腳本會啟動一個隱藏的記事本程序。
使用PowerShell隱藏其它進(jìn)程的窗口
這是一個奇葩的需求,但是用戶也有一番自己的理由:
@scl95tx如是說:
我已經(jīng)實現(xiàn)了一個24小時不間斷的Powershell腳本,有很多數(shù)據(jù)通過write-host命令輸出到控制臺(需要隨時查看這些數(shù)據(jù),確保server運行正常,所以后臺運行我先不考慮),如果(由于操作失誤)誤點擊控制臺窗口,那么腳本就會停止執(zhí)行,是否有辦法把控制臺隱藏起來,如果我想查看腳本的運行情況,再把控制臺調(diào)出來:也就是有隨時隱藏和調(diào)出來控制臺的辦法嗎?
這需求合情合理啊,接下來我們解決這個問題:
Add-Type @'
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
'@ -name “Win32ShowWindowAsync” -namespace Win32API
Function Set-ProcessWindowStyle
{
param(
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true)]
[System.Diagnostics.Process]$Process,
[ValidateSet("Show", "Minimized","Maximized","Hidden")]
[string]$WindowStyle="Show"
)
$WinStateInt = 1
switch($WindowState)
{
"Hidden" {$WinStateInt = 0}
"Show" {$WinStateInt = 1}
"Maximize" {$WinStateInt = 3}
"Minimize" {$WinStateInt = 6}
}
[Win32API.Win32ShowWindowAsync]::ShowWindowAsync($Process.MainWindowHandle,$WindowState)
}
寫完上面的腳本后,我滿心喜悅地進(jìn)行測試,隱藏窗口成功:
Get-Process notepad | Set-ProcessWindowStyle -WindowStyle Hidden
可是當(dāng)我嘗試調(diào)出隱藏的窗口時,執(zhí)行返回false。
PS> Get-Process notepad | Set-ProcessWindowStyle -WindowStyle Show
False
對此我深表遺憾,當(dāng)窗口被隱藏后,進(jìn)程的句柄值MainWindowHandle變成了0,0代表什么?
MSDN如是說:如果關(guān)聯(lián)進(jìn)程沒有主窗口,則 MainWindowHandle 值為零。
結(jié)論:不要隱藏進(jìn)程的窗口,否則你將永遠(yuǎn)失去了操作該窗口的機會。
相關(guān)文章
Powershell從注冊表中查詢默認(rèn)MAPI客戶端的例子
這篇文章主要介紹了Powershell從注冊表中查詢默認(rèn)MAPI客戶端的例子2014-05-05
PowerShell入門教程之遠(yuǎn)程操作運行PowerShell的方法
這篇文章主要介紹了PowerShell入門教程之遠(yuǎn)程操作運行PowerShell的方法,本文講解了配置遠(yuǎn)程基礎(chǔ)結(jié)構(gòu)、執(zhí)行遠(yuǎn)程操作等內(nèi)容,需要的朋友可以參考下2014-10-10
PowerShell查看本機文件關(guān)聯(lián)程序和默認(rèn)打開程序的方法
這篇文章主要介紹了PowerShell查看本機文件關(guān)聯(lián)程序和默認(rèn)打開程序的方法,本文給出了查看方法,同時給出了一份讀取結(jié)果,需要的朋友可以參考下2015-06-06
Powershell直接腳本時出現(xiàn)無法加載文件因為禁止執(zhí)行腳本
Powershell直接腳本時出現(xiàn)無法加載文件因為在此系統(tǒng)中禁止執(zhí)行腳本,有關(guān)此問題的解決方法如下2014-08-08
Powershell改變腳本執(zhí)行優(yōu)先權(quán)的代碼分享
這篇文章主要介紹了Powershell改變腳本執(zhí)行優(yōu)先權(quán)的代碼分享,本文通過控制進(jìn)程的方式調(diào)整程序的執(zhí)行順序,需要的朋友可以參考下2014-11-11
用PowerShell刪除N天前或指定日期(前后)創(chuàng)建(或修改)的文件
這篇文章主要介紹了用PowerShell刪除N天前或指定日期(前后)創(chuàng)建(或修改)的文件,需要的朋友可以參考下2016-11-11

