【问题标题】:Can't create new folder from a FolderBrowserDialog via PowerShell无法通过 PowerShell 从 FolderBrowserDialog 创建新文件夹
【发布时间】:2019-07-17 05:52:41
【问题描述】:

在我的 powershell 脚本中,我打开一个FolderBrowserDialog 以从用户那里获取路径。我想允许用户创建新文件夹,但无论选择哪个文件夹,我都会收到此消息。

[窗口标题] 位置无效

[内容] 您不能在此处创建新文件夹。选择不同的 位置。

我想也许我需要提升 PowerShell 上的执行策略,但这并没有什么不同。

# [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
Add-Type -AssemblyName System.Windows.Forms

$FBD = New-Object System.Windows.Forms.FolderBrowserDialog
$FBD.ShowNewFolderButton = $True
$FBD.RootFolder = "MyComputer"
$FBD.SelectedPath = "C:\"
$FBD.Description = "Navigate and select directory"
$Choice = $FBD.ShowDialog()
if ($Choice -eq "OK")
{
    Write-Host "Selected Path: " $FBD.SelectedPath
}

更新附加信息:

  • 我可以在资源管理器中手动创建文件夹
  • 我可以在 powershell 中使用“New-Item”创建文件夹,无需提升权限

我尝试过但没有成功的事情:

  • 以提升的权限运行终端
  • 使用 Python TKinter 文件对话框(同样的问题)?!

总而言之,调用 Windows 窗体似乎是一个 Windows 权限问题。

【问题讨论】:

  • 运行表单的用户是否真的有权在C:(或您导航到的任何位置)中创建新文件夹?
  • @MathiasR.Jessen:用户可以使用“New-Item”在 powershell 中手动创建文件夹。表单有自己的权限吗?
  • 不,那不是问题所在。这种情况是在文件夹层次结构中的任何地方发生,还是在特定位置发生?
  • 它似乎并不局限于特定的位置。我尝试了多个层次结构,结果相同。

标签: powershell


【解决方案1】:

您没有该位置的管理员权限,或者您正在尝试访问您需要在提升的 PowerShell 终端中运行脚本的受限区域。当您可以简单得多时,无需调用 c#。

 New-Item -Path "c:\" -Name "NameOfFolder" -ItemType Directory

【讨论】:

  • 感谢您的回复。我可以在没有提升权限的情况下使用“New-Item”创建目录。我正在调用 C#,以便用户可以导航和选择路径,而不是键入它。但我同意这似乎是一个权限问题,但是运行提升的 PowerShell 终端仍然给我同样的问题。
  • 所以 .ShowDialog() 除非它在 ​​ISE 中或者您调用 Windows.Form 类,否则它将不起作用。这会变得很痛苦,但如果您对此感到满意,请尝试: [System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) 在脚本的最顶部。
  • 另一件事。 Get-ExecutionPolicy - 查看您的策略设置。听起来更像是您执行的目录有问题?
  • 我之前尝试调用 Windows.Form 没有任何成功(注释掉第一行)。我已将策略设置为绕过但没有成功。但是在 ISE 中运行它有效!不过,我想在没有 ISE 的情况下运行它。
  • 您是否有基于 GPO 的限制以阻止某些用户访问计算机的某些区域?例如隐藏 c: 驱动器?
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多