Powershell:在此对象上找不到 属性 'WorkingDirectory' (WIN10 - 18363) 但存在
Powershell: The property 'WorkingDirectory' cannot be found on this object (WIN10 - 18363) but exist
嗨,我尝试使用 powershell 来自动执行一些调度任务
应该在特定目录中启动 cmd.exe。
不幸的是 returns 在特定 属性
上出错
属性: TaskName.Actions.WorkingDirectory
# Testprog for Scheduler working directory setup
cls
$TaskName = "TestTask"
# Helpers for Task creation comment out when task exist
UnRegister-ScheduledTask -TaskName $TaskName
$Description = " Test Powershell Task creation"
$Trigger= New-ScheduledTaskTrigger -Daily -At 02:00pm
$Action= New-ScheduledTaskAction -Execute cmd.exe -Argument $StartString
$ProgPath = """e:\Temp\Softwarezipza.exe"""
$Param = " a -t7z -bd -ssw -wE:\Temp"
$Archive = " ""E:\Temp\LocalArch\TestArch.7z"""
$SourcePath = " ""E:\Logs\"" "
$User= "NT AUTHORITY\SYSTEM"
$StartString = "/c " + $ProgPath + $Param + $Archive + $SourcePath
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force -Description $Description
#>
$Task = Get-ScheduledTask -TaskName $TaskName # Read Scheduler Task to Object
$Task.Actions.WorkingDirectory # Retrieve no error
# E:\WrittenViaGUI # Test return value written via schduler GUI
$Task.Actions.WorkingDirectory = "E:\Temp\" #New working dir
错误:无法在此对象上找到 属性 'WorkingDirectory'。
正如 属性 的名称所暗示的那样,$Task.Actions
包含一个 值集合 (即使在给定情况下该集合仅包含 一个元素)。
PowerShell 的 member-access enumeration 功能允许您使用 属性 对集合的访问 (.WorkingDirectory
) get 属性它的 元素 的值 - 这就是 $Task.Actions.WorkingDirectory
成功的原因 - 但 not 也 set 属性 值 - 这就是 $Task.Actions.WorkingDirectory = ...
失败的原因。
您的解决方案选项是:
如果您知道 .Actions
仅包含 一个 操作,只需使用 [0]
访问唯一元素:
$Task.Actions[0].WorkingDirectory = 'E:\Temp\'
如果.Actions
包含多个个动作,并且您想将所有他们的工作目录设置为相同的值:
$Task.Actions.ForEach('WorkingDirectory', 'E:\Temp\')
# Slower alternatives
$Task.Actions.ForEach({ $_.WorkingDirectory = 'E:\Temp\' })
$Task.Actions | ForEach-Object { $_.WorkingDirectory = 'E:\Temp\' }
有关详细信息,请参阅 this answer。
嗨,我尝试使用 powershell 来自动执行一些调度任务 应该在特定目录中启动 cmd.exe。
不幸的是 returns 在特定 属性
上出错属性: TaskName.Actions.WorkingDirectory
# Testprog for Scheduler working directory setup
cls
$TaskName = "TestTask"
# Helpers for Task creation comment out when task exist
UnRegister-ScheduledTask -TaskName $TaskName
$Description = " Test Powershell Task creation"
$Trigger= New-ScheduledTaskTrigger -Daily -At 02:00pm
$Action= New-ScheduledTaskAction -Execute cmd.exe -Argument $StartString
$ProgPath = """e:\Temp\Softwarezipza.exe"""
$Param = " a -t7z -bd -ssw -wE:\Temp"
$Archive = " ""E:\Temp\LocalArch\TestArch.7z"""
$SourcePath = " ""E:\Logs\"" "
$User= "NT AUTHORITY\SYSTEM"
$StartString = "/c " + $ProgPath + $Param + $Archive + $SourcePath
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force -Description $Description
#>
$Task = Get-ScheduledTask -TaskName $TaskName # Read Scheduler Task to Object
$Task.Actions.WorkingDirectory # Retrieve no error
# E:\WrittenViaGUI # Test return value written via schduler GUI
$Task.Actions.WorkingDirectory = "E:\Temp\" #New working dir
错误:无法在此对象上找到 属性 'WorkingDirectory'。
正如 属性 的名称所暗示的那样,$Task.Actions
包含一个 值集合 (即使在给定情况下该集合仅包含 一个元素)。
PowerShell 的 member-access enumeration 功能允许您使用 属性 对集合的访问 (.WorkingDirectory
) get 属性它的 元素 的值 - 这就是 $Task.Actions.WorkingDirectory
成功的原因 - 但 not 也 set 属性 值 - 这就是 $Task.Actions.WorkingDirectory = ...
失败的原因。
您的解决方案选项是:
如果您知道
.Actions
仅包含 一个 操作,只需使用[0]
访问唯一元素:$Task.Actions[0].WorkingDirectory = 'E:\Temp\'
如果
.Actions
包含多个个动作,并且您想将所有他们的工作目录设置为相同的值:$Task.Actions.ForEach('WorkingDirectory', 'E:\Temp\') # Slower alternatives $Task.Actions.ForEach({ $_.WorkingDirectory = 'E:\Temp\' }) $Task.Actions | ForEach-Object { $_.WorkingDirectory = 'E:\Temp\' }
有关详细信息,请参阅 this answer。