Powershell需要执行两行

时间:2011-08-03 14:29:56

标签: .net powershell wget

我有两个需要在PowerShell中执行的命令。其他所有东西都可以批量下载。我可以在PowerShell中编写所有内容,但我必须确保正确设置执行策略,这可能是我们在这些服务器上的netadmins的安全问题。

在我的批处理脚本中,我需要:

  1. 打开IIS应用程序缓存(我可以使用AppCmd)
  2. 从服务器下载新的zip文件(使用我的 wget 版本的Powershell)
  3. 删除www目录中的所有旧文件
  4. 解压缩www目录中的zip文件
  5. 打开IIS应用程序缓存。
  6. 在第2步中,我的两个powershell命令是:

    $client = new-object System.Net.WebClient
    $client.DownloadFile("http://path/to/file", "file.name")
    

    有没有办法可以将这两行组合成一个Powershell命令,就像我在unix中使用分号一样?我试图在两行之间加一个分号并得到以下错误:

    Missing ')' in method call.
    At line:1 char:62
    + $client.DownloadFile(  <<<< http://path/to/file )
       + CategoryInfo          : ParserError: (CloseParenToken:TokenId) [], ParentContainsErrorRecordException
       + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall
    

    但是,在一个名为“wget.ps1”的实际Powershell脚本中,它会执行:

    $ powershell -c wget.ps1
    

3 个答案:

答案 0 :(得分:1)

嗯,你至少有两个选择。第一种是在运行脚本时定义执行策略。这只会更改您正在开始的一个会话的策略:

powershell.exe -File 'C:\Path\To\File.ps1' -ExecutionPolicy RemoteSigned

或者您可以直接传递命令:

powershell.exe -command {$string = 'bobdee';$client.DownloadFile("http://path/to/file", "file.name")}

答案 1 :(得分:0)

你可以这样做:

(new-object System.Net.WebClient).DownloadFile("http://path/to/file", "file.name")

答案 2 :(得分:0)

2013年更新:

我不确定11年的情况如何,但现在您可以在PowerShell中执行以下操作:

wget "http://path/to/file" -outfile "file.name"