无法创建 2 个机器环境变量并通过计划任务执行另一个命令

问题描述

我想创建 2 个“机器”环境变量,并通过单个计划任务执行命令。计划任务应立即运行并自行删除。计划任务应以当前登录的桌面用户身份执行。

以下是我需要执行的 3 个项目:

[Environment]::SetEnvironmentvariable('AppA',(Get-StartApps -Name 'PowerShell (Tools1)').AppID,'Machine')
[Environment]::SetEnvironmentvariable('AppB',(Get-StartApps -Name 'PowerShell (Tools2)').AppID,'Machine')
Export-StartLayout -path 'C:\temp\Orig.xml'

注意:我不想依赖外部脚本;这就是为什么我有这么长的代码$action

当我运行下面的代码时,几乎总是没有执行任何命令。很少会创建单个环境变量。如果不可能在单个任务中可靠地做到这一点,我希望有人能告诉我如何在 3 个单独的任务中可靠地做到这一点。似乎即使我执行 3 个单独的任务,结果仍然不一致/不可靠。

代码

$AppA = (Get-StartApps -Name 'Windows PowerShell ISE (x86)').AppID
$AppB = (Get-StartApps -Name 'Outlook').AppID
$action = New-ScheduledTaskAction -Execute "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-noprofile -windowstyle hidden -command ( [Environment]::SetEnvironmentvariable('AppA',$AppA,'Machine') ; [Environment]::SetEnvironmentvariable('AppB',$AppB,'Machine') ; Export-StartLayout -path 'C:\temp\Orig.xml' )"
$trigger = New-ScheduledTaskTrigger -Once -At (get-date).AddSeconds(4); $trigger.EndBoundary = (get-date).AddSeconds(8).ToString('s')
$principal = New-ScheduledTaskPrincipal -UserId (Get-WmiObject -Class win32_computersystem).UserName -logonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DeleteExpiredTaskAfter 00:00:12
Register-ScheduledTask -TaskName "2 envvars and Export-StartLayout" -Action $action -Trigger $trigger -Principal $principal -Settings $settings

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)