我試圖以編程方式確定.ps1腳本是否運行明顯或不。如果它明顯運行,它應該重新啓動自己隱藏。如果它已經隱藏,請不要採取任何行動。確定腳本是否正在運行隱藏
我遇到的問題是一個循環,它不斷重新啓動,因爲無法確定隱藏狀態。
我一直在尋找get-process cmdlet和GWMI Win32_process,並沒有看到任何類似.visible屬性來檢查狀態。
If ($me -eq visible ???)
{
$Invisible = New-Object System.Diagnostics.ProcessStartInfo
$Invisible.FileName = "PowerShell.exe"
$Invisible.windowStyle ="Hidden"
$Invisible.arguments = "$myInvocation.MyCommand.Definition"
$Invisible.Verb = 'runas'
[System.Diagnostics.Process]::Start($Invisible)
}
任何想法什麼領域,我可以如果-eq反對???
或者也許我的問題是如何獲得 - 從PowerShell中設置正在運行的進程的WindowStyle,這樣我就不必重新調用了。 –
我會用兩個腳本。一個將是一個啓動器,另一個將是主要腳本。這會讓事情變得更簡單,特別是對於調試。在我看來,最好是直截了當而不是聰明。但是,您仍然需要能夠檢測主腳本是否正在運行。我會使用Windows Semaphore對象。但這是一個不同的問題,所以我不會在這裏回答。如果你問這個問題(「如何確定它運行的PowerShell腳本」),我可以回答它。 –
是專門試圖避免第二個文件。 –