powershell - 无法创建 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
解决方案
推荐阅读
- java - Solace - 当 solace jar 升级到 v10.1 时创建 InitialContext 失败
- amazon-web-services - AWS EKS - 创建负载均衡器服务停止服务
- acumatica - DAC 扩展上的未绑定字段 - 在哪里填充?
- shell - AWK 传递变量
- blockchain - 跨链互操作
- android - 从服务android读取房间数据库实体
- javascript - Captivate Javascript 检测 LMS 活动已完成
- python-3.x - Cron 作业不使用 Python
- sql-server - SSIS 目录 - Powershell - 访问包变量
- azure - Groovy:使用 JSON 执行 azure CLI 命令 - 解析问题?