Я пытаюсь создать сценарий Powershell для преобразования некоторых аудиофайлов в папку, и я использую FolderBrowserDialog, чтобы запросить у пользователя местоположение выходной папки, и OpenFileDialog, чтобы получить путь к программе конвертера (в дело не в той же папке скрипта). Оба диалога вызываются с помощью отдельных функций, которые вызываются основной программой.
Проблема в том, что когда я возвращаю 'OpenFileDialog.FileName' и 'FolderBrowserDialog.SelectedPath' из каждой функции, я получаю объект, который содержит путь и некоторые другие значения, а не сам путь в виде строки.
Это объекты, которые я получаю из функций: OpenFileDialog.FileName Result FolderBrowserdialog.SelectedPath Result
Функции:
Function GetConverterPath
{
$currentDirectory = Split-Path -Parent $PSCommandPath;
$isConverterInCurrentDirectory = Test-Path $($currentDirectory + "\tfa2wav.exe")
if($isConverterInCurrentDirectory)
{
return ($currentDirectory + "\tfa2wav.exe");
}
[System.Windows.MessageBox]::Show("The converter's *.exe file was not found in the same directory as this script`n" +
"Please, point to the right file in the next dialog...", 'Converter not found...','Ok','Information');
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog;
$OpenFileDialog.filter = 'Executable files (*.exe)|*.exe';
$result = $OpenFileDialog.ShowDialog()
if($result -eq 'OK')
{
return $OpenFileDialog.FileName;
}
else
{
exit;
}
}
Function AskForOutputFolder
{
[System.Windows.MessageBox]::Show("In the next dialog you should select the folder where the converted sound files will be placed",
'Information','Ok','Information');
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null;
$folderBrowserDialog = New-Object System.Windows.Forms.FolderBrowserDialog;
$folderBrowserDialog.Description = "Select a folder";
$result = $folderBrowserDialog.ShowDialog()
if($result -eq 'OK')
{
return $folderBrowserDialog.SelectedPath;
}
else
{
exit;
}
}
Любые идеи о том, как решить эту проблему?
Кроме того, как я могу предотвратить появление сообщений «ОК» в консоли после каждого диалога?