2017-10-16 10 views
0

私はPowerShellのにかなり新しいですし、私はこのような何かやろう:あなたがnull値のメソッドを呼び出すことはできません」私はエラーを取得する最後のコマンドで動的に作成された変数のメソッドにはどのようにアクセスできますか?

$sshictcred = New-Object 
System.Management.Automation.PSCredential("username",$password) 

New-Variable -Name $Server"session" -Value (New-SSHSession -ComputerName 
$Server -Credential($credentials)) 

New-Variable -Name $Server"stream" -Value ("`$"(Get-Variable -Name 
$Server"session" | % Name).Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 1000)) 

私の問題を表現 "と呼ばれる。これは、以前に設定した変数の名前を生成する必要があるため、$記号がないためです。

したがって、以前に生成された変数から新しい「私は動的だと思う」変数を作成します。私は新しいVAR - 値を作成した後にしたい

出力:

$PREVVARNAME.Session.CreateShellStream(xxxxx) 

私は、このように生成された文字列たい思い簡素化: 「$」コマンドGET-VARの出力文字列を「セッション」として

+0

こんにちは同様

とのStackOverflowへの歓迎。ヘルプセンター([よく質問する方法](https://stackoverflow.com/help/how-to-ask))または[ツアー](https://stackoverflow.com)をご覧ください。/tour) – Clijsters

+0

質問を編集して、達成しようとしていることを簡単に説明してください。コードサンプルはちょっと変わったので、希望の結果を得るためにはるかに簡単な方法があるでしょう。 – vonPryz

答えて

0

これらのコマンドレットにアクセスすることはできませんが、ここでいくつかの動的変数を作成し、いくつかの関連する方法を使用しようとしているようです。

まず、最初の動的変数の出力をキャプチャして保存するだけです。

$serversession = New-Variable -Name $Server"session" -Value (New-SSHSession -ComputerName $Server -Credential($credentials)) -Passthru 

だから今$serversessionは最低でも名前と値のプロパティを持っているでしょうSystem.Management.Automation.PSVariableだろう。

今、私たちはがそれをやるべきことを私たちの次の動作

$serversession.Value.Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 1000)) 

を実行するために$serversessionを使用することができます。

私はここで動的変数の必要性について個人的に質問します。複数の同時セッションを予定している場合は.....しかし、それに対処する方法はたくさんあります。例えばハッシュテーブル

$sessions = @{} 
$sessions["$Server"] = New-SSHSession -ComputerName $Server -Credential($credentials) 
$sessions["$Server"].Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 1000)) 
+0

私はPowerShellでスクリプトの学習を始めたばかりですので、いくつかのスクリプト用語についてはうまくいきません。 実際には、複数のSSHセッションが構築されています(これは、すべてのサーバーで同じトリックですが、サーバー1では「何か」を実行しますが、サーバー2では「何か他のことを行う」は難しいです。セッションを維持し、そのセッションにアクセスしてアクションを実行する必要があります。 私はこの権利を説明していますか? –

+0

ありがとう、ありがとうございます。 –

関連する問題