2012-04-02 7 views
1

HTAのテキストファイルからデータを書き込もうとしています。HTAがテキストファイルから<span>に書き込む

私は、私はその後、約60のサーバー

のために各ループのために使用するつもりだ、HTAの内側にPowerShellスクリプトを実行している入力ボタン

Get-TSSession -computername ismeta | where { $_.username -eq 'amis5235'} | format-table windowstationname,username,state,sessionid | out-file C:\windows\temp\PSTerminalServices.txt 

のVBScriptを使用しています種類のVBでストリーマのように、HTA内に出力を書き込むことを望んや文字列VBScriptを積み重ね、のようなものだった:

strHTML = strHTML & "Running Process = " & objProcess.Name & " PID = " & objProcess.ProcessID & " Description = " & objProcess.Description & "<br>" 

が、SIMがなければならないようですこれを行うpler方法。

+0

私は本当にあなたの質問を理解していません。 poweshellから行を生成することはできませんか? PowerShellのUI用にWindowsフォームではなくHTAを使用しているのはなぜですか? – JPBlanc

+0

ほとんどの場合、私はVBScript用のいくつかのチュートリアルHTAで遊んだことがあり、彼らが提供した柔軟性と簡単な学習曲線が好きで、さらにEd Wilson MSのpowershell posterboyは、それらをpowershellスクリプトに使用することをお勧めします。http://blogs.technet.com/b/heyscriptingguy/archive/2009/08/31/hey-scripting-guy-can-i-create-a-gui-for-a-windows -powershell-script.aspx、より良い方法があれば、その方向に私を指すように自由に感じる –

答えて

0

これは私が使用する方法です。

理論的には、Windowsフォームとのインターフェイスを構築し、PowerSellコードをイベントの後ろに配置することにあります。その後、

1)C#でインターフェースを構築するために使用Visual Studioの無料版と関連付けるPowerShellのソース(french article here

2を作成するための変換ツール)次のことができます。技術的な観点で

2つのソリューションフォームを作成することを可能このツール

PrimalFormsCE download

(あなただけ登録する必要があります)Sapiens PrimalFormsCE.exe(コミュニティ版)自由にダウンロードして、 Powershell associeteコードを生成します。あなたがここにもクラッシュからフォームを構築することができます

PrimalFormsCE image

は、サンプルコードの平和です:

Add-Type -AssemblyName system.Windows.Forms 

# Create the form 
$form = New-Object Windows.Forms.Form 
$form.Text = "Test Saisie" 
$form.Size = New-Object System.Drawing.Size(250,154) 

# Create EntryFiel 
$TB_Saisie = New-Object System.Windows.Forms.TextBox 
$TB_Saisie.Location = New-Object System.Drawing.Point(50,31) 
$TB_Saisie.Size = New-Object System.Drawing.Size(150,32) 

# Create "Ok" Button 
$PB_Ok = New-Object System.Windows.Forms.Button 
$PB_Ok.Text = "Ok" 
$PB_Ok.Location = New-Object System.Drawing.Point(50,62) 
$PB_Ok.Size = New-Object System.Drawing.Size(50,32) 
$PB_Ok.DialogResult = [System.Windows.Forms.DialogResult]::OK 

# Create "Cancel" Button 
$PB_Cancel = New-Object System.Windows.Forms.Button 
$PB_Cancel.Text = "Cancel" 
$PB_Cancel.Location = New-Object System.Drawing.Point(150,62) 
$PB_Cancel.Size = New-Object System.Drawing.Size(50,32) 
$PB_Cancel.DialogResult = [System.Windows.Forms.DialogResult]::Cancel 
# Add controls to the form 
$form.Controls.Add($PB_Ok) 
$form.Controls.Add($PB_Cancel) 
$form.Controls.Add($TB_Saisie) 

# Message loop 
$Res = $form.ShowDialog() 
If ($Res -eq [System.Windows.Forms.DialogResult]::OK) 
{ 
    Write-Host ("Accepted : {0}" -f $TB_Saisie.Text) 
} 
else 
{ 
    Write-Host "Cancel" 
} 
+0

はVB6と非常によく似ていますが、私はまだそれが私が求めていることをすることは可能だとは思いますが、少なくともMSによれば、そこには良い例はない –

1

私は、この最小限のHTAはあなたの問題を解決すると思います。これはコマンドラインを実行し、出力ストリームを1/10秒ごとに1行読み込み、その結果をテキストエリアにプッシュします。 Powershellスクリプトを変更してプロセスの詳細をSTDOUTに戻すことができますが、おそらく動作します。

<script language="Javascript"> 
var E, LineWriteTimerID 
function execWithStatus(cmdLine){//Can't run minimized with Exec. Can't capture StdOut/StdErr with Run. 
    E = new ActiveXObject("WScript.Shell").Exec(cmdLine); 
    LineWriteTimerID = window.setInterval("writeOutLine()",100);//pause for 100ms 
    E.StdIn.Close();//must close input to complete a ps command  
} 
function writeOutLine(){ 
    if(E.StdOut.AtEndOfStream) window.clearTimeout(LineWriteTimerID); 
    if(!E.StdErr.AtEndOfStream) txtResults.value += "ERROR: " + E.StdErr.ReadAll() + "\n"; 
    if(!E.StdOut.AtEndOfStream) txtResults.value += E.StdOut.ReadLine() + "\n"; 
} 
</script> 
<textarea id=txtCmd style="width:90%" rows=1> 
powershell.exe -noninteractive -command ls c:\windows\system32\drivers\etc\</textarea> 
<button onclick="execWithStatus(txtCmd.value)">Run</button> 
<br><textarea id=txtResults style="width:100%" rows=20></textarea> 

、.HTAファイルとしてこのコードを保存し、コマンド・ラインであることをtxtCmdテキストエリアの内容を変更し、それを試してみます。がんばろう!