使用批处理文件调用.ps1文件,在Powershell中使用Invoke -WebRequest下载文件

时间:2017-03-18 06:25:37

标签: windows powershell batch-file cmd

我正在尝试做类似的事情, 我必须使用powershell Invoke -WebRequest cmdlet下载一些文件,我在我的hardrive中的“myscript.ps1”文件中编写了脚本 现在我想通过创建一个用于在Powershell中调用powershell文件的批处理文件,使用cmd在Powershell中调用并执行此文件 我该怎么办?

4 个答案:

答案 0 :(得分:0)

我不是故意粗鲁但是你看到了这一点吗?或者首先搜索Stackoverflow的类似问题?看来你要问的是如何运行PowerShell脚本。我用Google搜索了这个,并得到了几个关于这个主题的非常好的指南。

  1. Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  2. 根据环境的不同,这可能不是您想要做的,因为您基本上是在关闭未经授权的脚本的安全性。

    1. Powershell.exe -File“myscript.ps1”
    2. http://windowsitpro.com/powershell/running-powershell-scripts-easy-1-2-3

答案 1 :(得分:0)

如果您只想下载文件,则无需使用.ps1文件 例如,要下载MAC地址供应商列表,我将其批量使用:

if($cat_layout=='masonry-3' || $cat_layout=='masonry-2'){
    $postcounter=1;
    echo '<div class="module-masonry-wrapper clear-fix">';
        echo '<div class="masonry-content-container">';
            while(have_posts()){
                if($postcounter==4){
                    echo '<div id="adsbetween"><center>YOUR_ADSENSE_CODE</center></div>';
                }
                the_post();
                echo kid_masonry_render(get_the_ID());
                ++$postcounter;
            }
        echo '</div>';
    echo '</div>';
}

我不会永久性地将$postcounter=1; echo '<div class="classic-blog-content-container">'; while(have_posts()){ if($postcounter==4){ echo '<div id="adsbetween"><center>YOUR_ADSENSE_CODE</center></div>'; } the_post(); echo kid_classic_blog_render(get_the_ID(),35); ++$postcounter; } echo '</div>';' 更改为powershell -nop -command "iwr \"http://standards-oui.ieee.org/oui.txt\" -Outfile \"%temp%\oui.txt\"" ,使用ExecutionPolicy或在上述命令中包含unrestricted

答案 2 :(得分:0)

出于调试目的,保持提升的PowerShell窗口打开以查看所有输出流(特别是警告和错误)。

为此,请使用-NoExit参数

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoExit -NoProfile -ExecutionPolicy Bypass -File ""D:\myscript.ps1""' -Verb RunAs}"

pause代理-Command ""D:\myscript.ps1;pause""

-File ""D:\myscript.ps1""

请注意,如果PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -Command ""D:\myscript.ps1;pause""' -Verb RunAs}" 文件不存在,上述任何方法都无济于事。此外,在调用脚本中发生终止错误的情况下,我不确定D:\myscript.ps1方法的有效性。

答案 3 :(得分:0)

无需将Powershell作为单独的进程启动。只需用&amp;执行脚本即可pathToScript.ps1。以下是下载Powershell脚本并运行它的示例:

$chocoInstallScriptUrl  = 'http://.../install/Install.Choco.ps1'
$chocoInstallScript     = Join-Path $env:Temp 'Install.Choco.ps1'

Set-ExecutionPolicy Unrestricted

$downloader = New-Object System.Net.WebClient
$downloader.DownloadFile($chocoInstallScriptUrl, $chocoInstallScript)

& $chocoInstallScript