System.Windows.Messagebox超时Powershell

时间:2019-02-06 11:12:43

标签: windows powershell popup timeout messagebox

我需要用[System.Windows.MessageBox]询问超时,代码是下一个:

“ logX”(如log1,log2或log3)具有写入文件的功能,仅更改Log3。 Log3写完后“退出”(离开脚本)。我们不需要此功能的工作方式

#Funcion para comprobar si existe el token o no.
function Token{
#comprobamos si existe el fichero
$token = Test-Path $dir_token
if($token -eq $True){
    #Existe el fichero
    $ftoken = 1
}else{ 
    #No existe el fichero
    $ftoken = 0
}
return $ftoken
}

#Asignamos dirección de token
$Global:dir_token = "D:\Nuevacarpeta\Nueva carpeta\token.txt"
#Ejecutamos la funcion de Token para saber si existe ahora mismo
$ftoken = Token
#Preparamos la ruta del log
$log = "D:\Nuevacarpeta\log\log.txt"

#Creamos la variable Outlook transformandolo en un objeto (Commobject de Powershell)
$Global:outlook = New-Object -comobject outlook.application
$comprobaroutlook = Get-variable -name outlook
$valueoutlook = $comprobaroutlook.Value

if($valueoutlook.Equals("")){

$msgBoxInput =  [System.Windows.MessageBox]::Show('Outlook no se puede tratar, SCRIPT FAIL, para Borrar token y continuar con la ejecución pulsa SI, para no borrar el token e ignorar este mensaje pulse NO','ERROR CRITICO SCRIPT','YesNo','Error')
switch  ($msgBoxInput) {
  'Yes' {
  ## Do something 
  Remove-Item -Path $dir_token
  [System.Windows.MessageBox]::Show("BORRADO TOKEN")
  Log3("Borrado token, proxima ejecución sera correcta")  
  }
  'No' {
  ## Do something
  [System.Windows.MessageBox]::Show("No hacemos nada, esperamos")
  Log3("No tiene contenido la variable outlook")
  }
}
}elseif($ftoken -eq 1){

$msgBoxIn = [System.Windows.MessageBox]::Show('Outlook no se puede tratar, SCRIPT FAIL, para Borrar token y continuar con la ejecución pulsa SI, para no borrar el token e ignorar este mensaje pulse NO','ERROR CRITICO SCRIPT','YesNo','Error')     
switch  ($msgBoxIn) {
  'Yes' {
  ## Do something 
  Remove-Item -Path $dir_token
  [System.Windows.MessageBox]::Show("BORRADO TOKEN")
  Log3("Borrado token, proxima ejecución sera correcta") 
  }
  'No' {
  ## Do something
  [System.Windows.MessageBox]::Show("No hacemos nada, esperamos")
  Log3("Existe Token")
  }
}

}else{

  New-Item -Path $dir_token -ItemType File

}

我问这条车道的超时时间:

-[System.Windows.MessageBox] :: Show(“ BORRADO TOKEN”) -[System.Windows.MessageBox] :: Show(“ No hacemos nada,esperamos”)

此消息仅提供信息,我想在屏幕上弹出窗口5分钟后显示并关闭它

1 个答案:

答案 0 :(得分:0)

您可以使用Wscript.Shell COM对象。

$sh = New-Object -ComObject "Wscript.Shell"
$intButton = $sh.Popup("Testing",2,"Title",0+64)

来自here

  

语法

  intButton = objShell.Popup(strText,[nSecondsToWait],[strTitle],[nType]) 
     

参数

     

objShell:一个WScript.Shell对象

     

strText:包含您想要的文本的字符串值   出现                       在弹出的消息框中。

     

nSecondsToWait:显示弹出窗口的最长时间   信息                       框(以秒为单位,可选,默认=无限)

     

strTitle:标题文本字符串,可选。

     

nType:按钮和图标的类型(数字,可选)                       这些确定如何使用消息框。

     

IntButton:按钮的编号(整数值)                       这是当用户单击确定时返回的值。

     

nType的含义是通过组合2中的值来确定的   下表:

     

按钮类型

     

值说明
      0 OK按钮。
      1确定和取消按钮。
      2中止,重试和忽略按钮。
      3是,否和取消按钮。
      4是和否按钮。
      5重试和取消按钮。

     

图标类型
         值说明
      16“停止标记”图标。
      32个“问号”图标。
      48个“感叹号”图标。
      64“信息标记”图标。

     

返回值IntButton的可能值:

     

值说明
      1个确定按钮
      2取消按钮
      3中止按钮
      4重试按钮
      5忽略按钮
      6是按钮
      7没有按钮

     

如果用户在nSecondsToWait intButton被打开之前没有单击按钮   设置为-1。