我在使用PowerShell和Batch文件时遇到了一些麻烦。当我运行一个调用Powershell脚本的批处理文件时,它会正常运行。注销并登录之后就好像什么也没发生一样。
这是批处理文件(SetWallpaper.bat):
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
PAUSE
这是我的Powershell代码(SetWallpaper.ps1):
Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value "<root>\Users\temp\Tree_Updown.jpg"
rundll32.exe user32.dll, UpdatePerUserSystemParameters
正如我所说,它有效,但在注销后,壁纸是默认的Windows图片。
好奇心是,当我单独启动Powershell代码而没有批处理时,它的工作非常完美。
我在网上搜索了其他一些替代方案,比如通过VBS启动文件,但它没有用。
VBS代码(LaunchSetWallpaper.vbs):
command = "powershell.exe -nologo -command <root>\Users\temp\SetWallpaper.ps1"
set shell = CreateObject("WScript.Shell")
shell.Run command,0
由于某种原因未知,它什么也没做。
此时,我不知道还能做什么。希望有人能给我一些建议。
感谢。
Martin Leiva