PowerShell:CLI或GUI - 您需要或更喜欢哪个?

时间:2008-10-08 12:51:48

标签: winforms command-line powershell scripting automation

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

6 个答案:

答案 0 :(得分:3)

在回答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函数,但在PowerShell v1中很难实现FolderBrowserDialog's STA thread requirement


修改:感谢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 }
}

答案 1 :(得分:1)

我最喜欢的命令行shell的旧gui工具是一个select目录工具,当从命令行执行时会打开一个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”或其他请注释。

答案 2 :(得分:0)

这不是主要用于那些希望在交给用户或者对控制台一无所知并且喜欢漂亮照片的人之前制作脚本的人吗?

答案 3 :(得分:0)

我会前往PowerGUI网站,我相信你已经知道了Jeff。用户在那里做的事情是我会考虑PowerShell和GUI融合的例子。生成对象列表然后深入到对象的层次结构,或在对象上运行脚本的能力。这种事情是我看到GUI界面闪耀的地方。

答案 4 :(得分:0)

我希望这里有一些例子,因为我确信如果他们有一个漂亮的用户界面并且可以使用鼠标,我可以委派大量的任务。

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

我在等待想法:)

答案 5 :(得分:0)

实际上,在考虑更多这方面,在我看到的示例中,使用GUI它们似乎是多个输入前端,这比使用多个开关的命令行更容易完成,这可能是相当长且更难的可视化。