我有一個功能內的作業,它需要一個屏幕截圖。腳本本身由Taskscheduler作爲域管理員執行。我還檢查了「以最高權限運行」。爲什麼我的屏幕截圖功能不能作爲工作
工作應該做一個截圖,然後發送電子郵件,但這兩件事情都不會發生。我也沒有看到錯誤信息(可能是因爲它是後臺工作?)。也許電子郵件不會被髮送,因爲它要將截圖附加到電子郵件上,但不能因爲屏幕截圖未被創建。
爲什麼我的功能沒有截圖?域管理員有權寫入目標。當我運行start-job
以外的功能時,屏幕截圖會被創建。如果我具有start-job
內部的功能,它不會被創建,如果腳本是通過Taskscheduler啓動或手動啓動,則無關緊要。
我錯過了什麼?
下面的代碼開始工作,並採取截圖:
Start-Job -Name LogikWebserverWatch {
function Take-Screenshot([string]$outfile)
{
[int]$PrtScrnWidth = (gwmi Win32_VideoController).CurrentHorizontalResolution
[int]$PrtScrnHeight = (gwmi Win32_VideoController).CurrentVerticalResolution
$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, $PrtScrnWidth, $PrtScrnHeight)
$bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height
$graphics = [Drawing.Graphics]::FromImage($bmp)
$graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)
$bmp.Save($outfile)
$graphics.Dispose()
$bmp.Dispose()
}
while ((Get-Process LogikWebserver).Responding) {sleep -Milliseconds 50}
if (!(Get-Process LogikWebserver).Responding) {
Try{
$utf8 = New-Object System.Text.utf8encoding
$datetime = (get-date).ToString('yyyyMMdd-HHmmss')
Take-Screenshot -outfile C:\Install\LogikWebserverErrorReporting\Screenshot-$datetime.png
# some more code [...]
} Catch { some more code [...] }
}}
當我運行函數的前兩行時,出現'System.Object [ ]「來鍵入」System.Int32「。 - 你沒有明白嗎? – Bassie
@Bassie nope。我已經在其他腳本中多次使用過該函數。如何在「CurrentHorizontalResolution」中有兩個或更多值?你有兩張圖形卡嗎? – SimonS
你確定'腳本本身是由Taskscheduler作爲域管理員來執行嗎?這是很多特權。 – vonPryz