PowerShell v1.0 は明らかにコンソール ベースの管理シェルです。GUI インターフェイスは必要ありません。Exchange 2007 管理 GUI のように必要な場合は、PowerShell の上に構築されます。PowerShell スクリプトで Windows フォームを使用して、独自の GUI を作成できます。私の質問は、「単純なグラフィカル インターフェイスを追加することで、どのような種類の PowerShell スクリプトまたは管理タスクを実行するのが最適だと思いますか?何を達成するために winform を作成しましたか?」
6 に答える
monkut の提案に対する答えとして、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
の STA スレッドの要件は、PowerShell v1 で実現するのはかなり困難です。
編集: Gordonのおかげで、 FolderBrowserDialog
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 }
}
コマンド ライン シェル用の私のお気に入りの古い GUI ツールは、コマンド ラインから実行すると、GUI ディレクトリ選択ダイアログを開くディレクトリ選択ツールでした。長いパス名を持つ他のディレクトリに cd する必要がある場合は、非常に役立ちます。
残念ながら、以前使用していた古い exe ツールが見つかりませんでした。(とにかく、以前はpowershellでした)また、powershellからダイアログを直接呼び出してこれをcmd-letなどにする方法を理解するのに十分なpowershellに精通していませんが、ここで私がいくつかの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」などのコマンドを呼び出すことができます。コメントしてください。
ここでいくつかの例を期待しています。きれいな UI があり、マウスで使用できる場合に委任できるタスクがたくさんあると確信しているためです。
ただ、UIを付けるということで、無いところを考えるのに苦労しています。私が考えることができる例のほとんどは、既存の UI の選択されたセクションを単純化するか、公開することです。それらは通常、存在しないか、提供された管理コンソールでは見にくい既存のデータとは異なるビューです。または、ループやパイプラインを使用して一部の機能を拡張します (必要に応じて、マウスを使用して 200 個のファイルの名前を変更することもできます)。私が行ったことでまだ使用されているものはほとんどすべて、ワンショット スクリプトか、どこかでスケジュールされたタスクとして座っているかのどちらかです。
私はアイデアを待っています:)
これは主に、ユーザーに渡す前にスクリプトをきれいにしたいパワーシェルの人や、コンソールについて何も知らず、きれいな写真が好きな人によって使用されているのではありませんか?!
Jeff のことはご存知だと思いますが、PowerGUI サイトにアクセスします。そこでユーザーが行っていることは、powershell と GUI の融合の見本と考えられるものです。オブジェクトのリストを生成し、オブジェクトの階層構造にドリルダウンする機能、またはオブジェクトに対してスクリプトを実行する機能。この種のことは、GUI インターフェースが輝くところです。
実際、これについてもっと考えてみると、GUI を使用している例では、複数の入力フロント エンドのように見えます。これは、非常に長くて視覚化するのが難しいいくつかのスイッチを備えたコマンド ラインよりもはるかに簡単に実行できるものです。