2012-07-10 58 views

回答

10

也許這個劇本是你想要什麼:

Function Select-FolderDialog 
{ 
    param([string]$Description="Select Folder",[string]$RootFolder="Desktop") 

[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | 
    Out-Null  

    $objForm = New-Object System.Windows.Forms.FolderBrowserDialog 
     $objForm.Rootfolder = $RootFolder 
     $objForm.Description = $Description 
     $Show = $objForm.ShowDialog() 
     If ($Show -eq "OK") 
     { 
      Return $objForm.SelectedPath 
     } 
     Else 
     { 
      Write-Error "Operation cancelled by user." 
     } 
    } 

用途爲:

$folder = Select-FolderDialog # the variable contains user folder selection 
+0

您需要在param塊之後移動程序集加載。 – 2012-07-10 12:16:41

+0

@ShayLevy謝謝!現在修復。 – 2012-07-10 12:41:16

+0

完美的工作,謝謝 – naveejr 2012-07-12 03:54:59

1

以上沒有爲我工作。運行Windows 7使用PowerShell第2版。 我確實發現以下,這也允許彈出和選擇:

Function Select-FolderDialog 
    { 
     param([string]$Description="Select Folder",[string]$RootFolder="Desktop") 

    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") Out-Null  

    $objForm = New-Object System.Windows.Forms.FolderBrowserDialog 
    $objForm.Rootfolder = $RootFolder 
    $objForm.Description = $Description 
    $Show = $objForm.ShowDialog() 
    If ($Show -eq "OK") 
    { 
     Return $objForm.SelectedPath 
    } 
    Else 
    { 
     Write-Error "Operation cancelled by user." 
    } 
    } 

萬一別人有同樣的問題。

+1

工程,但有時有沒有顯示前面的對話的問題。 – Baodad 2013-08-08 01:19:39

0

只是想後的增編,我相信這是在兩者之間缺少一個管|

[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

和:

Out-Null 
+0

缺少哪個答案/代碼片段?據我所知,至少在被接受的答案中有一條管道。 – 2017-05-30 22:50:34

相關問題