簡體   English   中英

如何從 PowerShell GUI 獲取文件名

[英]How to get the filename from PowerShell GUI

我正在制作一個程序來通過 RegEdit 更改各種圖標,我想出了一個很好的 GUI,人們可以在其中選擇他們希望將文件更改為哪些 .ico 文件,這將是一個很好的接觸。 唯一的問題是,我對 PowerShell 一無所知,但操作 RegEdit 比使用 Python 容易得多。 而且我對 PowerShell GUI 了解較少。

Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ 
    InitialDirectory = [Environment]::GetFolderPath('Desktop') 
    Filter = 'Icons (*.ico)|*.ico'
}
$result = $FileBrowser.ShowDialog()
<#What do here?#>

最后一行,注釋所在的位置,我該怎么做才能獲取包含我剛剛搜索的文件名的字符串或任何數據類型? 對於任何好奇的人來說, $FileBrowser只是提供了一個默認的 Windows 文件搜索窗口,我只是在上面設置了.ico限制。 我調用什么方法? 我閱讀了有關DialogResult一些內容,但我不明白該方法或小程序如何與ShowDialog也不明白它是如何用於獲取文件名的(如果這是正確的解決方案)

Add-Type -AssemblyName System.Windows.Forms

$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ 
    InitialDirectory = [Environment]::GetFolderPath('Desktop') 
    Filter = 'Icons (*.ico)|*.ico'
}

if ('OK' -eq $FileBrowser.ShowDialog()) {
  "User chose: $($FileBrowser.FileName)"
}
else {
  'User canceled the dialog.'
}

注意:您可以在 PowerShell 中使用字符串代替枚舉值,PowerShell 會自動轉換這些值; 您也可以顯式地使用枚舉值,但這會更加冗長; 例如, 'OK'[System.Windows.Forms.DialogResult]::OK


至於發現涉及的類型及其成員

  • 您可以在變量上使用Get-Member cmdlet 來發現其值的 .NET 類型和該類型的成員。

  • 要獲取有關給定 .NET 類型的更多信息,您可以簡單地在 google 上搜索它,或者以編程方式構建和打開 URL,如下所示:

$result = $FileBrowser.ShowDialog()

# Get the full name of the type of the value stored in $result
$fullTypeName = $result.GetType().FullName

# Assuming the type is one that comes with .NET,
# look up its documentation online (using the default browser).
Start-Process "https://docs.microsoft.com/en-us/dotnet/api/$fullTypeName"

這個答案包含一個名為Show-TypeHelp的便利函數,它包裝了上述內容。

$Result | Get-Member

這會告訴你方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM