如何访问动态创建的变量的方法?
我是相当新的PowerShell和我尝试做这样的事情:如何访问动态创建的变量的方法?
$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))
我的问题:
在最后一个命令我得到的错误:“你不能叫一个空值的方法表达”。我想这是因为它缺少$符号,因为它应该生成以前设置的变量的名称。
因此,我创建一个新的“我相信动态”变量从以前生成的变量。
输出I创造新变种 - 数值后想:
$PREVVARNAME.Session.CreateShellStream(xxxxx)
简化的I 认为我想这样生成的字符串: “$” 命令GET-VAR的输出字符串 “会话”
我无权访问这些cmdlet,但看起来您只是试图在此创建一些动态变量并使用一些关联的方法。
首先让我们捕捉第一个动态变量的输出并保存。
$serversession = New-Variable -Name $Server"session" -Value (New-SSHSession -ComputerName $Server -Credential($credentials)) -Passthru
所以现在$serversession
将是一个System.Management.Automation.PSVariable
其中至少将有一个名称和值属性。
现在我们可以使用值$serversession
执行我们下一个操作
$serversession.Value.Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 1000))
这应该做到这一点。
就我个人而言,我会质疑这里需要动态变量。如果你打算有多个并发会话也许.....但是有很多方法可以解决这个问题。
例如像
$sessions = @{}
$sessions["$Server"] = New-SSHSession -ComputerName $Server -Credential($credentials)
$sessions["$Server"].Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 1000))
请理解,我刚刚开始学习使用PowerShell脚本,因此难以跟上一些脚本术语。 这个想法确实建立了多个SSH会话(因为这对每个服务器来说都是相同的技巧,但是在服务器1上“做些什么”但服务器2上的“做其他事情”对我来说是非常棘手的,所以对于我需要的每个服务器保持一个会话,我需要能够访问该会话来执行操作。 我解释这个权利吗? –
非常感谢。 –
您好,欢迎StackOverflow的一个哈希表。请查看帮助中心([我如何提出一个好问题](https://stackoverflow.com/help/how-to-ask))或参加[tour](https://stackoverflow.com/tour) – Clijsters
请编辑问题并用简单的英语解释你想要达到的目标。代码示例有点奇怪,所以可能有更简单的方法来获得期望的结果。 – vonPryz