绕过任务计划程序不起作用。任何想法或技巧?

时间:2019-04-22 21:31:46

标签: powershell batch-file

我在两台计算机上都安装了Powershell 2.0和Windows 7。 我是一个管理员,但另一个有一些安全限制。

在Google上学习时,我找到了下一个代码:

$hour24 = (Get-Date).ToString("HH:00")
& schtasks /create /tn MyBATScheduledTask /sc HOURLY /mo 1 /ST ${hour24} /f /ru SYSTEM /tr "C:\Users\Gabriel\Desktop\MyBat.bat"

使用管理员权限可以正常工作,但是当我尝试第二台计算机时会得到: “访问被拒绝”

我也玩过其他代码,但没什么用。

有一个秘密吗?有可能吗?

1 个答案:

答案 0 :(得分:0)

这不是PowerShell代码问题。

Windows中的许多配置都要求您是管理员。因此, 如果Windows需要管理员,则必须在PowerShell会话中使用admin。

同样,该命令实际上并不正确。运行外部命令/可执行文件时,报价很重要。

PowerShell: Running Executables

  
      
  1. 呼叫运营商&
  2.   
     

为什么:用于将字符串视为SINGLE命令。对交易有用   带有空格。

     

在PowerShell V2.0中,如果您正在运行7z.exe(7-Zip.exe)或其他   以数字开头的命令,您必须使用命令   调用运算符&。

     

PowerShell V3.0解析器现在更加智能,在这种情况下,您不必   需要&了。

     

详细信息:运行命令,脚本或脚本块。呼叫接线员,   也称为“调用运算符”,使您可以运行以下命令   存储在变量中并由字符串表示。因为打电话   操作员不解析命令,无法解释命令   参数

     

示例:

& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen
  

当外部命令具有很多参数时,事情可能会变得棘手   或者参数或路径中有空格!

     

对于空格,您必须嵌套引号,而结果却不是   永远清楚!

     

在这种情况下,最好像这样将所有内容分开:

$CMD = 'SuperApp.exe'
$arg1 = 'filename1'
$arg2 = '-someswitch'
$arg3 = 'C:\documents and settings\user\desktop\some other file.txt'
$arg4 = '-yetanotherswitch'

& $CMD $arg1 $arg2 $arg3 $arg4

# or same like that:

$AllArgs = @('filename1', '-someswitch', 'C:\documents and settings\user\desktop\some other file.txt', '-yetanotherswitch')

& 'SuperApp.exe' $AllArgs