2014-09-05 24 views
3

因此,我對Powershell還是比較新的,我正在嘗試編寫一個腳本,允許用戶選擇文件或文件夾,然後獲取所述文件夾的安全權限/文件。問題是,我似乎無法得到文件路徑作爲一個變量記錄以後使用。這是我到目前爲止有:如何正確使用Powershell中的FolderBrowserDialog

Function Get-Folder($initialDirectory) 
{ 
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

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

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

或許我的路要走這一點,但它會拉上了窗簾選擇一個文件或文件夾,讓我選擇兩次,然後不設置變量文件路徑。再一次,我對這種事情很陌生,所以我可能完全錯誤,但任何幫助都會非常有幫助。

謝謝!

回答

7

文件夾選擇器窗口顯示兩次,因爲您有兩個對$foldername.ShowDialog()的調用。刪除第一個,只留下if

我試着運行你的代碼,並且確定$folder變量已被設置。如果你認爲它沒有設定,你做錯了什麼。例如,請注意,它只在Get-Folder函數中可見。如果您需要在函數外部使用它,則應將其返回(return $folder)並將其分配給函數外的變量。例如:

Function Get-Folder($initialDirectory) 

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

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

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

$a = Get-Folder 

這樣,您將在$a變量中擁有所選文件夾。

1

您需要添加 「|外空」 的行 「[System.Reflection.Assembly] :: LoadWithPartialName(」 System.Windows.Forms的 「)」 結束

否則有一堆由Get-Folder返回的信息你不想要

乾杯,加斯

相關問題