1

我将从我希望放置压缩文件的机器上运行脚本,在指定的路径中。我想从 UNC 路径(从第一个读取主机)压缩文件夹,并将生成的 .zip 文件的副本放入计算机上的指定目录(从第二个读取主机)。

我想要一些帮助,将必要的组件添加到这段 Powershell 代码中(假设我在这里的工作)。

我知道我可以运行类似的东西:

Compress-Archive \\tommc-pc\c$\users\tommc -DestinationPath c:\windows\temp\tommc_windows_home.zip

但我想让它更加用户友好,因此用户将输入要压缩的源路径和文件夹的 UNC 路径,并提示输入 .zip 文件的完整目标路径和文件名我正在运行脚本的机器。

您能否提供一些关于我如何完成此任务的指导?

4

1 回答 1

0

Compress-Archive不支持远程计算机上的操作。要远程执行相同的操作,您应该使用Invoke-Commandor PS-Session。这是您可以使用的示例:

Read-host -assecurestring | convertfrom-securestring | out-file C:\path\to\the\file\Credentials_encrypted.txt
$user = "domain\username"
$pass = Get-ChildItem "C:\path\to\the\file\Credentials_encrypted.txt" | ConvertTo-SecureString
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $pass

## Below command will execute the command in the remote system. Means that Compress-Archive is now running locally on the remote machine. 
Invoke-Command -ComputerName Remote_Computer_IP -ScriptBlock { Compress-Archive -Path C:\Reference\* -DestinationPath C:\Destination\Destination_file.zip } -credential $cred

## Once the compression is done, you can simply use `copy-item` to pull the same file into your local system. 
Copy-Item -Path \\Remote_Computer_IP\C$\Destination\Destination_file.zip -Destination C:\localsystem\path\destination_file.zip

除了所有这些,请记住在远程计算机上调用命令,您需要启用PSRemoting。因此,请通过我在问题最后的回答:ENABLE-PSRemoting以查看详细信息。

注意:如果您@param在脚本块内部使用并像-argumentlistInvoke-command

于 2021-03-25T08:37:17.237 回答