![脚本新手,需要帮助运行 powershell 脚本来部署软件。(powershell 阻止执行)](https://linux22.com/image/1438988/%E8%84%9A%E6%9C%AC%E6%96%B0%E6%89%8B%EF%BC%8C%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E8%BF%90%E8%A1%8C%20powershell%20%E8%84%9A%E6%9C%AC%E6%9D%A5%E9%83%A8%E7%BD%B2%E8%BD%AF%E4%BB%B6%E3%80%82%EF%BC%88powershell%20%E9%98%BB%E6%AD%A2%E6%89%A7%E8%A1%8C%EF%BC%89.png)
以下脚本是为我编写的。我的问题是,当我们的远程部署系统执行脚本时,本地计算机上的 Powershell 将不会运行该脚本。但它运行 .vbs 没有问题。长话短说,我们的远程部署软件将此 .zip 文件复制到所有未连接到我们域的机器上。然后,此脚本应该将文件解压缩到特定位置。
在不太复杂的情况下,有没有办法将这个函数转换成简单的.vbs,或者有没有办法使用批处理命令来使 powershell 在我需要的所有工作站上执行这个脚本?
Set oShell = CreateObject( "WScript.Shell" )
user=oShell.ExpandEnvironmentStrings("%UserName%")
comp=oShell.ExpandEnvironmentStrings("%ComputerName%")
USRPROFILE = oshell.expandenvironmentstrings("%UserProfile%")
Appdata = USRProfile & "\AppData\"
sZipFile = "C:\ProgramData\CentraStage\Packages\377fa3f4-6b60-4ec5-94b9-fc1716d53ea9#\vidistar.zip"
sTargetFolder = appdata
Dim oShellApp:Set oShellApp = CreateObject("Shell.Application")
Dim oFSO:Set oFSO = CreateObject("Scripting.FileSystemObject")
'Create the target folder if it isn't already there
If not oFSO.FolderExists(sTargetFolder) Then
oFSO.CreateFolder sTargetFolder
wscript.echo sTargetFolder & " Folder Has Been Created "
end if
'Extract the files from the zip into the folder
oShellApp.NameSpace(sTargetFolder).CopyHere oShellApp.NameSpace(sZipFile).Items
答案1
该代码示例看起来像 VBScript,而不是 PowerShell。尝试使用 运行它cscript
。
或者,如果您的远程部署系统知道如何运行.vbs 文件,只需将扩展名从.ps1 更改为.vbs。
答案2
这是一个重要的提示:
Get-Help Set-ExecutionPolicy
和
Get-Help about_execution_policies
这里最大的问题是:你的目标机器是否被允许运行未签名的脚本?PowerShell 根据会话设置了不同的限制,通常你会发现策略是受限制的。
您可以通过加入域的计算机上的组策略设置执行策略,这通常是更好的选择。