powershell远程启动程序,任务管理器里有,但是前台没有界面,即使是有UI界面的程序;
怎么办了,可以使用SCHTASKS 启动临时仅仅执行一次的任务,即可正常显示拉...
ps1 脚本代码:
$Username = '服务器用户名'
$Password = '服务器的密码'
$ComputerName='服务器的IP或网络名'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
#远程获取服务器的时间 ;设定为几分钟之后,或者不获取,直接使用固定的时间;
#以对象服务器时间为准; 必须在当前时间之后,不然会报错
$tmpTime = Invoke-Command -ComputerName $ComputerName -ScriptBlock { get-date -format 'HH:mm' } -credential $Cred
$tmpTimeName = Invoke-Command -ComputerName $ComputerName -ScriptBlock { get-date -format 'YYMMDDHHmm' } -credential $Cred
$Hour=[int]($tmpTime.SubString(0,2))
$Minute=[int]($tmpTime.SubString(3,2))
#设定为当前时间,一分钟之后 ;注意超过23点或者59分会出错
$Minute=$Minute+1
if($Minute -gt 59){
$Minute=0
$Hour=$Hour+1
if($Hour -gt 23){
$Hour=0
}
}
#格式化输入 ,开始时间--MM:HH格式
$StartTime = "{0:d2}:{1:d2}" -f $Hour,$Minute
#启动的程序,如果有空格的,要用‘’框起来
$Cmd="'xxx:/xxx/xxx.exe'"
$ScriptDelete=[ScriptBlock]::Create(\"SCHTASKS.EXE /delete /sc once /tn tmpTask /tr $Cmd /st $StartTime /f\")
$Script=[ScriptBlock]::Create("SCHTASKS.EXE /create /sc once /tn tmpTask /tr $Cmd /st $StartTime /f")
#可以打印命令到本地
#add-Content -path c:/xxx.log -value $Script
#先删除旧的
Invoke-Command -ComputerName $ComputerName -ScriptBlock $ScriptDelete -credential $Cred
Invoke-Command -ComputerName $ComputerName -ScriptBlock $Script -credential $Cred