【问题标题】:How to create a Scheduled Task via Invoke-command when Blanks in a Path are involved?当涉及路径中的空白时,如何通过调用命令创建计划任务?
【发布时间】:2013-08-22 16:52:32
【问题描述】:

尝试创建一个计划任务,其中启动了 Powershell 复制项任务。 (减轻双跳问题”)在 *.ps1 文件中使用 copy-item 命令并调用这对我来说不是首选方式,因为我计划在此示例运行后即时构建路径名称。

以下按预期工作:

Invoke-Command -session $mysession -ScriptBlock { schtasks /create /RU myuser /RP mypasswd  /TN "Temp Task Copy-Item" /TR "powershell -ExecutionPolicy Bypass -command  copy-item -path \\192.168.1.1\share\Folder -Destination C:\Temp" /SC ONCE /ST 22:35} 

但是,当我想复制到带有空格的路径 C:\Program Files (x86)\Temp 而不是 C:\Temp 时,神奇的语法是什么 认为我已经尝试了所有反引号组合方式但没有运气;-)

【问题讨论】:

    标签: powershell scheduled-tasks


    【解决方案1】:

    尝试在带有空格的路径周围使用单引号,它会起作用。

    Invoke-Command -session $mysession -ScriptBlock { schtasks /create /RU myuser /RP mypasswd  /TN "Temp Task Copy-Item" /TR "powershell -ExecutionPolicy Bypass -command  copy-item -path \\192.168.1.1\share\Folder -Destination 'C:\Program Files (x86)\Temp'" /SC ONCE /ST 22:35} 
    

    【讨论】:

    • 感谢您的回答。你的解决方案有点......第一个问题是我不能在单个 qoutes 中使用变量。但更大的问题是,在任务计划程序中,单引号被“翻译”为双引号。这似乎也引起了问题。我将对此进行更多调查..
    【解决方案2】:

    为我的问题找到了解决方法:我跳过使用 Copy-Item 并使用普通 CMD 进行复制:

    #Set Source & Dest
    $source = "\\192.168.1.1\share\Folder\*"
    $dest = "C:\Program Files (x86)\Temp"
    
    #Build command (Note: Single Quotes +"'" will appear in Schedueld Task as Double Quotes
    $copycmd = "schtasks /create /RU myuser/RP mypasswd  /TN `"Temp Task Copy-Item`" /SC ONCE /ST 22:35 /TR `"cmd /c copy "+"'"+"$source"+"'"+" "+"'"+"$dest"+"'"+" "
    #Run Command
    Invoke-Command -session $mysession -ScriptBlock { cmd /c  "$args"} -ArgumentList $copycmd
    

    【讨论】:

      猜你喜欢
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2014-02-27
      • 2015-08-21
      相关资源
      最近更新 更多