无法使用' Run with Powershell'执行PowerShell脚本。选项

时间:2018-06-09 21:33:48

标签: windows shell powershell batch-file command-line

您好我写了一个简单的PowerShell脚本:

  1. 创建网站的IE快捷方式
  2. 禁用Java控制面板的混合代码安全验证
  3. 将几个网站添加为可信站点
  4. 当我手动将其复制并粘贴到PowerShell中时,脚本运行正常。
    但是,当我将其保存为.ps1文件并使用Powershell' - 它似乎没有执行(没有做出改变)。

    我尝试将执行策略更改为Bypass,但仍然无法执行。

    enter image description here

    关于如何使用' Run with Powershell'来运行.ps1脚本的任何想法?

    这样我的用户就可以简单地运行此脚本,而无需复制并粘贴到PowerShell中。

    谢谢你, 阿西

    以下是完整的参考脚本:

    & powershell.exe -executionpolicy bypass -file C:\Users\AZahir\Desktop\ps2.ps1
    
    $Shell = New-Object -ComObject ("WScript.Shell")
    $ShortCut = $Shell.CreateShortcut($env:USERPROFILE + "\Desktop\Jacada.lnk")
    $ShortCut.TargetPath = "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
    $ShortCut.Arguments = "http://facebook.com"
    $ShortCut.WorkingDirectory = "C:\Program Files (x86)\Internet Explorer";
    $ShortCut.WindowStyle = 1;
    $ShortCut.IconLocation = "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
    $ShortCut.Save()
    
    Add-Content -Path "$env:USERPROFILE\AppData\LocalLow\Sun\Java\Deployment\deployment.properties" -Value ('deployment.security.mixcode=DISABLE')
    
    
    Set-Location "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    Set-Location ZoneMap\Domains
    New-Item bpoazusargdb01d
    Set-Location bpoazusargdb01d
    New-ItemProperty . -Name http -Value 2 -Type DWORD
    
    Set-Location "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    Set-Location ZoneMap\Domains
    New-Item "172.30.1.3"
    Set-Location "172.30.1.3"
    New-ItemProperty . -Name http -Value 2 -Type DWORD
    
    Set-Location "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    Set-Location ZoneMap\Domains
    New-Item "172.30.1.49"
    Set-Location "172.30.1.49"
    New-ItemProperty . -Name http -Value 2 -Type DWORD
    
    Set-Location "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    Set-Location ZoneMap\Domains
    New-Item "172.30.1.89"
    Set-Location "172.30.1.89"
    New-ItemProperty . -Name http -Value 2 -Type DWORD
    

2 个答案:

答案 0 :(得分:0)

  

这样我的用户就可以简单地运行此脚本而无需复制   并粘贴到powershell。

使用bat文件。

包括

PowerShell.exe -executionpolicy bypass -file "%~dp0ps2.ps1"

enter image description here

从powershel脚本中删除以下内容。

& powershell.exe -executionpolicy bypass -file C:\Users\AZahir\Desktop\ps2.ps1

当用户双击bat文件时,他们将运行ps2.ps1。

当我运行它时,我没有看到错误。它创建快捷方式和reg键。如果你试图第二次运行它,它会产生错误,说reg键存在..

使用"""代替"更多详情[{3}}

也是明智之举

或者如果用户将此脚本放在包含c:\new folder\

空格的路径中,您的用户可能会遇到运行脚本的问题

答案 1 :(得分:0)

如果您的唯一目标是让用户有一个快捷方式可点击链接来运行您的PowerShell脚本,您可以通过粘贴此标题下的脚本内容(保存为myscript.cmd或任何您想要的内容)来实现此目的。把它命名为:)

::<#
@ECHO OFF
REM https://stackoverflow.com/questions/3759456/create-a-executable-exe-file-from-powershell-script#answer-4629494
REM https://blogs.msdn.microsoft.com/zainala/2008/08/05/using-0-inside-the-batch-file-to-get-the-file-info/

SET "pwsh=%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe"
SET "args=-NoProfile -NoLogo -ExecutionPolicy Bypass -Command"
SET "cmd="@(Get-Content -Path '%~f0') -replace '^^::'^|Set-Content -Path '%~dpn0.ps1';. '%~dpn0.ps1' %*""

%pwsh% %args% %cmd%

DEL "%~dpn0.ps1" /Q /F
EXIT
::#>

简单地说,它将处理执行策略并在将批处理部分替换为块注释后将其自身保存为powershell脚本。