我看到这个问题已经被问了很多,但我没有看到任何解释我为什么会遇到这个问题...如果有人能把我从疯狂的边缘带回来我会这样做非常欣赏它。
这是代码示例。
$Browse_IE_Click = { $Browse_Identifier = "1"; & $Browse_Click }
$Browse_Click = {
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$File_Browse = New-Object System.Windows.Forms.OpenFileDialog
[void]$File_Browse.ShowDialog()
$fullpath = $File_Browse.FileName
$file = Split-Path -Path $File_Browse.FileName -Leaf
If ($Browse_Identifier -eq "1") { $Flash_IE_New.Text = "New: " + "$($file)"; $Flash_IE_File = $file }
} # End Browse_Click
$Save_Click = {
If ($Flash_IE_New.Text -ne "New: ") {
Remove-Item -Path "$dir\Files\Installs\$Flash_IE_Current_File"
Copy-Item $fullpath "$dir\Files\Installs\$Flash_IE_File"
} # End If
} # End Save_Click
这是一个带有多个浏览按钮的GUI。每个浏览按钮都会转到自己的$Browse_Something_Click
脚本块,该脚本块会为其提供一个标识号,然后转到$Browse_Click
。这是我节省空间的方式,只有一个真正的浏览脚本块。
无论如何,整个选择的文件和路径都放入$fullpath
,它也被分成文件名$file
。根据选择的浏览按钮,它会保存"文件"转换为更具体的变量,在本例中为$Flash_IE_File
。
当" Save"如果选择了某些内容,则单击该按钮将删除该文件夹中的当前文件,并将新选择的文件复制到该文件夹中。
除了Copy-Item行之外,一切正常。我已尝试添加-Path
和-Destination
,同时尝试将$fullpath
放入引号和\或$($fullpath)
。我已经尝试将$fullpath = $File_Browse.FileName
移到If ($Browse_Identifier -eq "1")
语句中的不同位置。我尝试将其拆分,而不是保存整个路径,而是保存父节点,然后在复制路径中使用$parent\$file
。那时我得到一个关于路径不是驱动器号或UNC路径的新错误。什么都行不通。
我已尝试通过Powershell控制台运行测试,但它运行正常。我浏览,保存到变量,将该变量复制到不同的位置,没有问题。
帮助!
答案 0 :(得分:0)
归功于PetSerAl。我只记得$script:fullpath
选项,这似乎解决了范围问题。
$script:fullpath = $File_Browse.FileName
$file = Split-Path -Path $File_Browse.FileName -Leaf
If ($Browse_Identifier -eq "1") { $Flash_IE_New.Text = "New: " + "$($file)"; $Flash_IE_File = $file }
$Save_Click = {
If ($Flash_IE_New.Text -ne "New: ") {
Remove-Item -Path "$dir\Files\Installs\$Flash_IE_Current_File"
Copy-Item $fullpath "$dir\Files\Installs\$Flash_IE_File"
} # End If
} # End Save_Click
谢谢!