嗨,我嘗試使用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”。
uj5u.com熱心網友回復:
由于屬性的名稱所暗示的,$Task.Actions包含集合值的(即使在特定情況下該集合只包含一個元素)。
PowerShell的成員列舉功能允許您使用屬性訪問(.WorkingDirectory上集合),以獲取其屬性值的元素-這就是為什么$Task.Actions.WorkingDirectory成功-但不是還要設定屬性值-這就是為什么$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\' }
有關更多資訊,請參閱此答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/394615.html
上一篇:在兩個不同的地方驗證檔案大小
