$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup("********Please Select the SOURCE Directory********",0,"Directory Selecter 5000",0x1)

Function Get-Folder($initialDirectory)

{

    $foldername = New-Object System.Windows.Forms.FolderBrowserDialog
    $foldername.rootfolder = "MyComputer"

    if($foldername.ShowDialog() -eq "OK")
    {
        $folder += $foldername.SelectedPath
    }
    return $folder
}

$a = Get-Folder

$wshellb = New-Object -ComObject Wscript.Shell
$wshellb.Popup("********Please Select the DESTINATION Directory********",0,"Directory Selecter 5000",0x1)
Function Get-Folder($initialDirectory)

{

    $foldername = New-Object System.Windows.Forms.FolderBrowserDialog
    $foldername.rootfolder = "MyComputer"

    if($foldername.ShowDialog() -eq "OK")
    {
        $folder += $foldername.SelectedPath
    }
    return $folder
}

$b = Get-Folder


Set-Content -Path "C:\script\scripts\script data.txt" -Value "$a" -Force
Set-Content -Path "C:\script\scripts\script data2.txt" -Value "$b" -Force

因此,此脚本可在ISE中使用,如果我将其复制/粘贴到CLI中就可以了。如果我导航到powershell CLI中的文件夹并从那里运行它,则会出现此错误:



该错误再次出现两次,对于应该弹出的文件夹选择窗口的每个实例一次。

我从运行对话框,快捷方式甚至从CLI尝试了-STA,它总是给我该错误。我已经使用[System.Threading.Thread]::CurrentThread.GetApartmentState()验证了powershell的开放实例是STA。我可以打开一个Powershell CLI并导航到该脚本所在的文件夹,调用该脚本,它将给我错误,然后可以将其复制\粘贴到相同的CLI中,并且可以正常工作。我还右键单击了资源管理器中的文件,然后选择“使用powershell运行”,这也给了我错误。我已经提升了CLI,以查看是否成功没有成功。

我担心这是一个小小的疏忽,希望有人能帮到我。

使用v1.0
窗户10

最佳答案

找不到类型[System.Windows.Forms.FolderBrowserDialog]是由于未加载程序集。

用装配件

Add-Type -AssemblyName "System.Windows.Forms"

关于powershell - 脚本可以在ISE中运行,而不能在某些Powershell CLI中运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49887553/

10-14 09:29