您好我写了一个简单的PowerShell脚本:
当我手动将其复制并粘贴到PowerShell中时,脚本运行正常。
但是,当我将其保存为.ps1文件并使用Powershell' - 它似乎没有执行(没有做出改变)。
我尝试将执行策略更改为Bypass,但仍然无法执行。
关于如何使用' 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
答案 0 :(得分:0)
这样我的用户就可以简单地运行此脚本而无需复制 并粘贴到powershell。
使用bat文件。
包括
PowerShell.exe -executionpolicy bypass -file "%~dp0ps2.ps1"
从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脚本。