我在两台计算机上都安装了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"
使用管理员权限可以正常工作,但是当我尝试第二台计算机时会得到: “访问被拒绝”
我也玩过其他代码,但没什么用。
有一个秘密吗?有可能吗?
答案 0 :(得分:0)
这不是PowerShell代码问题。
Windows中的许多配置都要求您是管理员。因此, 如果Windows需要管理员,则必须在PowerShell会话中使用admin。
同样,该命令实际上并不正确。运行外部命令/可执行文件时,报价很重要。
PowerShell: Running Executables
- 呼叫运营商&
为什么:用于将字符串视为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