PowerShell v1.0 显然是一个基于控制台的管理 shell。它实际上并不需要 GUI 界面。如果需要,例如 Exchange 2007 管理 GUI,它构建在 PowerShell 之上。您可以在 PowerShell 脚本中使用 Windows 窗体创建自己的 GUI。我的问题是,“您认为添加一个简单的图形界面最适合哪种 PowerShell 脚本或管理任务?您创建了 winform 来完成什么?”
6 回答
为了回答蒙库特的建议,这里有一个使用 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
STA 线程的要求是相当困难的。
编辑:感谢GordonFolderBrowserDialog
,这是一个显示使用 COM的解决方法:
function Select-Directory( ) {
$app = New-Object -COM Shell.Application
$directory = $app.BrowseForFolder( 0, "Select Directory", 0 )
$path = $directory.Self.Path
if( $path ) { return $path }
}
我最喜欢的命令行 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”或请评论。
Isnt this mainly used by powershell guys who want to make there scripts pretty before handing to users or people who know nothing about a console and like pretty pictures ?!
我会前往 PowerGUI 站点,我相信您已经知道 Jeff。用户在那里做的事情是我认为的 powershell 和 GUI 融合的范例。能够生成对象列表,然后深入了解对象的层次结构,或在对象上运行脚本。这种事情就是我会看到 GUI 界面大放异彩的地方。
我对这里的一些示例抱有希望,因为我确信如果他们有漂亮的 UI 并且可以用鼠标使用,我可以委派很多任务。
但就添加用户界面而言,我很难想出一个没有用户界面的地方。我能想到的大多数示例要么只是简化或暴露现有 UI 的选定部分。它们通常只是与现有数据不同的视图,这些数据不存在,或者在提供的管理控制台中很难看到。或者它们通过循环或流水线扩展某些功能(如果需要,您仍然可以使用鼠标更改 200 个文件的名称)。我所做的几乎所有仍在使用的事情要么是一次性脚本,要么是某个地方的计划任务。
我在等待想法:)
实际上,更多地考虑这一点,在我看到的使用 GUI 的示例中,它们似乎是多个输入前端,这比带有多个开关的命令行容易得多,这些开关可能很长且难以可视化。