所以我正在尝试准备一个简单的robocopy脚本。该脚本将被近500个用户使用,因此我正在尝试使其尽可能简单和用户友好。
为了收集诸如来源和目的地之类的信息,我希望有一个弹出窗口要求用户输入信息。我在其他论坛上也进行了检查,到目前为止,我也找到了几种选择,但是不幸的是,没有一个可以做到”
选项1(我最喜欢的选项,除了在我使用PowerShell时挂起):
,并没有使其变得更好。 具有以上两个选项,PowerShell在第三次运行后会挂起。第一次运行后有时会挂起。奇怪的是,它成功运行并运行了robocopy命令,但是在完成后,它在几分钟后停止响应。不确定VB是否在后台循环并且必须停止吗?Add-Type -AssemblyName Microsoft.VisualBasic $title = 'Your Current File Shares (Source)' $msg = 'Please enter the EEX file share you want to copy from ( please make sure the format is \\server\share\...) :' $source = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title) Add-Type -AssemblyName Microsoft.VisualBasic $title = 'Your new drive (Destination)' $msg = 'Please enter to where you want to copy your files (please make sure you choose the full destination) :' $destination = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title) Robocopy $source $Destination /log:N:\logfile.txt
选项2(类似于选项,只是一种不同的调用VB的方式):用[void] [Reflection.Assembly] :: LoadWithPartialName( 'Microsoft.VisualBasic')
选项3:
$source = Read-Host 'Enter Your current file share:' -AsSecureString
$destination = Read-Host 'Enter Your new file share:' -AsSecureString
这很简单,但是您无法控制框中的任何内容,这是我们可以接受的,但是主要问题是安全字符串,因此它不允许用户查看他或她在键入什么,这会导致很多人为错误。选项4:
function copy_files {
param (
[string]$Copy_from,
[string]$Copy_to
)
[pscustomobject]@{
copy_from = $Copy_from
copy_to = $copy_to
}
}
$result = Invoke-Expression (Show-Command Copy_files -PassThru )
$result
具有一种确实不希望使用的表单,其底部的中间是“复制”(在表单的底部,可以看到ok / copy / cancel,这会使用户感到困惑,导致点击复制并等待某些操作发生(因为目的是传输文件…)另一个消极的事情是,您可以使用什么文本和标题(或者至少当我尝试使用空格时可以使用什么,但在术语上非常有限,但是无论用引号还是双引号都不会识别出来)报价)。但是我可以忍受这样的化妆品骗局。
我无法添加任何其他模块,因此,例如showui不幸地不是一个选项。
关于如何做到这一点的任何想法?
提前感谢
所以我正在尝试准备一个简单的robocopy脚本。该脚本将由近500个用户使用,因此我正在尝试使其尽可能简单和用户友好。收集信息,例如...