2016-06-30 8 views
1

私の環境のユーザーが施設内の他のユーザーからのセッションをシャドーするのに役立つ小さなスクリプトがあります(私は本社で働いています。企業ユーザーは他のユーザーのセッションをシャドーする必要があります)別のサイトに沿ってpowershell - アレイの問題から特定の情報を取得

だから私はこれを持っている:

$servers = "server1, server2, server3, server4, server5" 

#search for user in servers farm 
foreach ($server in $servers) { 

$results = & qwinsta.exe $userid /server:$server 

    if ($results -ne $null) { 

     write-host "User found in $server" 

     $serverfound = $server 

     write-host $results[1] 

     $sessionid = $results[1] | Where-Object { $_ -is 0..99} 

     write-host "Session ID is: $sessionid" 
    } 
} 

しかし、私はそれが、結果からセッションIDをつかむために得ることができない、これはスクリプトの出力であります

Ple

私は単純にしようとしています:私たちはx2admを探しながら、ASEのセッションIDがある

server5

RDP-TCP#0 x2admで見つかった

ユーザー2アクティブ

RDSfarmサーバーを待ちます出力の数値を取得し、それを$ sessionidに割り当てて、シャドーイングプロセスを完全に自動化できるようにします。

ご協力いただければ幸いです。前もって感謝します。

+0

あなたを助けるためにここで良い答えがあります:http://stackoverflow.com/questions/23445175/qwinsta-serversomesrv-equivalent-in-powershell – sodawillow

+1

あなたの問題は$ servers = "server1、server2、server3 、server4、server5 "と入力します。 $ servers = "server1"、 "server2"、 "server3"、 "server4"、 "server5"でなければなりません。 –

+0

私はダンに同意します。ちょうど5つの個別アイテムではなく、ストリングを渡しました。 –

答えて

2

代わりにConvertFrom-Stringを使用することをおすすめします。このようなデータを解析するのはすばらしいことです。

ConvertFrom-String $results[1] 

P1 : 
P2 : console 
P3 : Stephen 
P4 : 1 
P5 : Active 
P6 : 

だから、私たちの$SessionID値が(P#は、このコマンドレットは、見つかった文字列に与えることだけで任意の名前です)P4に記載されています。

完全なコマンドはこれがありませんさらに修正を加え、あなたの現在のコードで動作します

$sessionID = convertfrom-string $results[1] | select -expand P4 

だろう。

+0

ConvertFrom-Stringを忘れました。 ConvertFrom-StringDataの使用に慣れています – Matt

+0

これが動作するとき、CFSは魔法と区別できません。 – FoxDeploy

+0

私の遅れの仕事がこの数週間で本当に忙しくなったのは残念ですが、このソリューションはこれが正確に自動化を完了するために必要なものでした。私は大いに感謝します。 –

1

データ型が$serversであることを確認してください。文字列であり、文字列ではなく、文字列であることがわかります。

PS C:\Users\matt> $servers = "server1, server2, server3, server4, server5" 
PS C:\Users\matt> $servers.GetType().FullName 

System.String 

あなたはこのようにそれを定義する必要がありabout_arraysからのアレイの基本的な概念についての詳細を読むことができます。限りqwinsta I have an answer that converts data from that into a PowerShell objectからの出力を扱うよう

$servers = "server1", "server2", "server3", "server4", "server5" 

。あなたがリンクされた質問のOpであったのと全く同じコマンドを使用していないので、極端である必要はないかもしれません。ポイントは、ConvertFrom-StringDataが強力なコマンドレットであることです。

+0

ユーザ名が数字で始まる場合は配列を返します。これは最後の問題です。文字列に変換できないようです。 [string] $ results =&qwinsta.exe "$ユーザーID" /サーバー:$サーバー [文字列] $結果=&qwinsta.exe "$ユーザーID" /サーバー:$サーバー $結果-join '' とタイプのどちらかが来ます配列やオブジェクトを返すには、どのように関係なく文字列を返すことができますか? –

関連する問題