相关疑难解决方法(0)

在 Server 2012 Core 中使用 Powershell 解压缩文件

我需要用powershell解压缩一个文件。我见过每个人这样做的典型方法是使用脚本自动化 shell。

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Run Code Online (Sandbox Code Playgroud)

这对我不起作用,因为服务器核心没有外壳,所以没有自动化。这会导致 E_FAIL COM 错误。

Powershell 似乎无法自行完成,如果我参加第 3 方,我必须首先想办法将实用程序加载到服务器上。7-Zip 是我的首选,但我似乎无法编写下载和安装它的脚本。Sourceforge 不断向我吐槽 HTML 文件。

如何在 Server 2012 Core 中完全编写解压 zip 文件的脚本?

powershell windows-server-core windows-server-2012

15
推荐指数
1
解决办法
2万
查看次数

为什么 .NET Folder.CopyHere 方法在 SQL Server 代理 PowerShell 作业步骤中运行时不允许对 .ZIP 文件进行对话框抑制?

我在 SQL Server 代理作业步骤中使用 PowerShell 自动将 .ZIP 文件内容提取到目录。

基于这个问题的最高投票答案:How to zip/unzip files in Powershell?

我正在使用此代码:

$dir_source = "\\myserver\myshare\"
$dir_destination = "\\myserver2\myshare2\"
$file_source = Get-ChildItem -Path (Join-Path -Path $dir_source -ChildPath "test.zip")

$shell_app = New-Object -com shell.application
$zip_file = $shell_app.namespace($file_source.FullName)
$destination = $shell_app.namespace($dir_destination)
$destination.Copyhere($zip_file.items(),20)
Run Code Online (Sandbox Code Playgroud)

CopyHere 方法的 vOptions 可选参数是 20,它指定“不显示进度对话框”。(4) 和“对显示的任何对话框用“全部是”来响应。” (16).

此参数在 PowerShell 脚本编辑器中按预期工作(我使用的是 PowerGUI 脚本编辑器)。我可以运行脚本,然后再次运行它(覆盖场景),脚本完成时没有错误,也没有对话框。但是,当目标数据库中已存在文件时,在 SQL Server 代理 PowerShell 作业步骤中执行相同的代码会导致作业挂起。

重现步骤:

- Instantiate code in a SQL Server 2008 SQL Server Agent Job step
- Start the SQL job
- …
Run Code Online (Sandbox Code Playgroud)

powershell compression .net copy sql-server-2008

4
推荐指数
1
解决办法
5740
查看次数