【问题标题】:PowerShell: CLI or GUI - which do you need or prefer? [closed]PowerShell:CLI 或 GUI - 您需要或更喜欢哪个? [关闭]
【发布时间】:2010-09-16 00:05:30
【问题描述】:

PowerShell v1.0 显然是一个基于控制台的管理 shell。它实际上并不需要 GUI 界面。如果需要,例如 Exchange 2007 管理 GUI,它构建在 PowerShell 之上。您可以在 PowerShell 脚本中使用 Windows 窗体创建自己的 GUI。我的问题是,“您认为添加一个简单的图形界面最适合哪种 PowerShell 脚本或管理任务?您创建了 winform 来完成什么?”

【问题讨论】:

    标签: winforms command-line powershell scripting automation


    【解决方案1】:

    作为对monkut's suggestion 的回答,这是一个使用WindowsForms 获取文件路径的简单函数OpenFileDialog

    [void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )
    
    function Select-File( [string]$initialDirectory=$pwd, [switch]$multiselect ) {
      $dialog = New-Object Windows.Forms.OpenFileDialog
      $dialog.ShowHelp = $true  # http://tinyurl.com/6cnmrr
      $dialog.InitialDirectory = $initialDirectory
      $dialog.Multiselect = $multiselect
    
      if( $dialog.ShowDialog( ) -eq 'OK' ) { $dialog.FileNames }
      $dialog.Dispose( )
    }
    

    我也尝试过创建类似的Select-Directory 函数,但FolderBrowserDialog's STA thread requirement 在PowerShell v1 中很难实现。


    编辑:感谢Gordon,这是使用COM 显示FolderBrowserDialog 的解决方法:

    function Select-Directory( ) {
      $app = New-Object -COM Shell.Application
      $directory = $app.BrowseForFolder( 0, "Select Directory", 0 )
      $path = $directory.Self.Path
      if( $path ) { return $path }
    }
    

    【讨论】:

      【解决方案2】:

      实际上,更多地考虑这一点,在我看到的使用 GUI 的示例中,它们似乎是多个输入前端,这比带有多个开关的命令行要容易得多,后者可能很长且更难可视化。

      【讨论】:

        【解决方案3】:

        我最喜欢的命令行 shell 旧 gui 工具是一个选择目录工具,当从命令行执行时会打开一个 gui 目录选择对话框。当您必须 cd 到具有长路径名的其他目录时,非常有帮助。

        不幸的是,我找不到以前使用的旧 exe 工具。 (无论如何它是pre-powershell) 另外,我对 powershell 还不够熟悉,无法弄清楚如何直接从 powershell 调用对话框并将其设置为 cmd-let 或其他任何东西,但这就是我所说的混合了一些 python 的内容。

        这里是:

        PS D:\> $dir = & "C:\python25\python.exe" "C:\python25\selectdir.pyw"; cd $dir;
        # Directory selection dialog opens here, user selects the directory to goto.
        PS D:\NewDirectory>
        

        还有python代码:

        import Tkinter
        import tkFileDialog
        
        root = Tkinter.Tk()
        root.withdraw()
        dirname = tkFileDialog.askdirectory(parent=root)
        
        print dirname
        

        我想再次拥​​有这个工具,如果有人知道如何清理它,那么我可以调用一个命令,如“cdir”或其他请评论。

        【讨论】:

          【解决方案4】:

          我希望这里有一些示例,因为我确信如果它们有漂亮的 UI 并且可以通过鼠标使用,我可以委派大量任务。

          但就添加用户界面而言,我很难想出一个没有用户界面的地方。我能想到的大多数示例要么只是简化或暴露现有 UI 的选定部分。它们通常只是与现有数据不同的视图,这些数据不存在,或者在提供的管理控制台中很难看到。或者它们通过循环或流水线扩展某些功能(如果需要,您仍然可以使用鼠标更改 200 个文件的名称)。我所做的几乎所有仍在使用的事情要么是一次性脚本,要么是某处的计划任务。

          我正在等待想法:)

          【讨论】:

            【解决方案5】:

            我会前往 PowerGUI 站点,我相信您已经知道 Jeff。用户在那里做的事情是我认为的 powershell 和 GUI 融合的范例。能够生成对象列表,然后深入了解对象的层次结构,或在对象上运行脚本。这种事情是我会看到 GUI 界面大放异彩的地方。

            【讨论】:

            • PowerGUI 无疑将它提升到了一个新的水平。我仍然希望了解人们提出了哪些需要 GUI 的独立 PoweShell 解决方案,或者什么情况。
            【解决方案6】:

            这不是主要由那些希望在交给用户或对控制台一无所知并喜欢漂亮图片的人之前制作漂亮的脚本的 powershell 家伙使用的吗?!

            【讨论】:

            • 我不知道我是否会走那么远,有时你想要一个 GUI。我很好奇这些情况在 PowerShell 中可能是什么。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-13
            • 1970-01-01
            • 1970-01-01
            • 2010-09-10
            相关资源
            最近更新 更多