【问题标题】:2 url's in powershell with cmd2 url 在 cmd 中的 powershell
【发布时间】:2014-12-19 21:40:20
【问题描述】:

我已经创建了以下计划任务,但我想添加第二个 url,它将在第一个结束后运行。谁能帮助με我该怎么做??

提前致谢。

schtasks /create /tn "My Task Title" /tr "powershell -ExecutionPolicy unrestricted -Command \"(New-Object Net.WebClient).DownloadString(\\\"Url1\\\")\"" /sc DAILY /ru username /rp pass

【问题讨论】:

  • 您可以使用分号将其他命令放在那里,只要它们都被正确引用和转义。根据这变得多么复杂,您可能会考虑将其放入脚本并使用 PowerShell 的 -File 参数
  • 就我个人而言,我会使用逗号分隔的 URL 列表,然后将其传送到运行下载的 ForEach 循环。
  • 我认为这些命令应该被移动到一个可以执行的 .ps1 文件中。使其更易于维护。
  • 我认为这里有人应该发布他们的建议作为答案(也许在 -File foo.ps1-Command "&{bar}" 上加上一些额外的解释)... ;)

标签: powershell cmd task schedule


【解决方案1】:

如果您有多个 URL,最好将一些逻辑移动到 PowerShell 脚本文件中,以将一些逻辑从命令行推送出去。并不是说您可以将所有这些都放在命令行中,而是为了方便和可读性,使用 powershell 的-File 参数将是一种更好的方法。首先,您需要创建一个名为“Get-WebStrings.ps1”的文件,其内容如下。

# Check to be sure we have at least one argument.
If($args.Count -gt 0){
    # Treat each argument as a URL that we need to download. 
    ForEach($singleURL in $args){
        # Download the string
        (New-Object Net.WebClient).DownloadString($singleURL)
        # Optional depending on your needs
        # (New-Object Net.WebClient).DownloadString($singleURL) | Out-Null
    }
}

此脚本将执行的操作将发送给它的参数视为将每个参数视为 url 并下载数据。默认情况下,这将输出到控制台。如果您只希望执行下载,那么您可以将输出通过管道传输到Out-Null请参阅上面的注释代码)。

接下来,您需要在命令行中创建任务,就像您已经完成的那样。 注意,该文件需要在调用任务的本地系统上可以访问!每个 URL 都放在字符串中的单引号内。

schtasks /create /tn "My Task Title" /tr "powershell -ExecutionPolicy unrestricted -File 'C:\Temp\Get-WebStrings.ps1' 'https://www.google.com' 'http://www.purple.com'" /sc daily /ru username /rp pass

如果您要查看 Task Scheduler 中的 Action,它会在运行后看起来像这样。

-ExecutionPolicy unrestricted -File "C:\Temp\Get-WebStrings.ps1" "https:\\www.google.com" "https:\\employee.firstair.ca"

【讨论】:

    猜你喜欢
    • 2015-06-10
    • 2014-09-16
    • 2021-06-20
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多