Powershell:在此对象(WIN10 - 18363)上找不到属性“WorkingDirectory”但存在

Posted

技术标签:

【中文标题】Powershell:在此对象(WIN10 - 18363)上找不到属性“WorkingDirectory”但存在【英文标题】:Powershell: The property 'WorkingDirectory' cannot be found on this object (WIN10 - 18363) but exist 【发布时间】:2022-01-24 02:07:13 【问题描述】:

嘿,我尝试使用 powershell 自动执行一些调度任务 应该在特定目录中启动一个 cmd.exe。

不幸的是,它在特定属性上返回错误

属性: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\Software\7zip\7za.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”。

【问题讨论】:

【参考方案1】:

正如该属性的名称所暗示的,$Task.Actions 包含一个 collection 值(即使在给定情况下该集合仅包含 一个 元素)。 p>

PowerShell 的 member enumeration 功能允许您在集合上使用属性访问 (.WorkingDirectory) 来获取元素 的属性值 - 这就是 @987654325 的原因@ 成功 - 但设置属性值 - 这就是 $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。

【讨论】:

$Task.Actions[0].WorkingDirectory = 'E:\Temp\' 对我有用,谢谢

以上是关于Powershell:在此对象(WIN10 - 18363)上找不到属性“WorkingDirectory”但存在的主要内容,如果未能解决你的问题,请参考以下文章

Win10怎么安装windows powershell……

PowerShell yarn : 无法加载文件 C:UsersAdminAppDataRoaming pmyarn.ps1,因为在此系统因为在此系统上禁止运行脚本。

win10怎样打开PowerShell

win10怎样打开PowerShell

PowerShell yarn : 无法加载文件 C:UsersAdminAppDataRoaming pmyarn.ps1,因为在此系统因为在此系统上禁止运行脚本。

win10 找不到powershell