我有一个哈希表,其中包含各种(S)FTP连接的连接数据。多亏了模块“ WinSCP”,我可以轻松地为(S)FTP传输创建会话
当前,我将Hastable结果保存在一个临时变量$arguments
中,然后将该变量用于后继操作
即使仅保留一行代码,是否有办法避免使用变量$arguments
?
示例哈希表:
$preferences = @{
"FTPUser" = @{
HostName = "ftp.domain.com"
PortNumber = 21
Protocol = "FTP"
}
"SFTPUser" = @{
HostName = "sftp.otherdomain.com"
GiveUpSecurityAndAcceptAnySshHostKey = $true
}
}
具有当前温度变量的函数Get-FtpSession
:
function Get-FtpSession ($user) {
$arguments = $preferences["$user"]
$session = New-WinSCPSession @arguments
return $session
}
我认为我可以使用类似的方法(无效):
$session = New-WinSCPSession @($preferences["$user"])
P.S:我知道这个问题是毫无意义的,但我仍在想是否可以解决
答案 0 :(得分:1)
如果您愿意修改该cmdlet,则可以通过向其参数添加ValueFromPipelineByPropertyName开关来实现类似的操作。因此,您可以从管道中输入参数。
function foo { [CmdletBinding()]param(
[parameter(ValueFromPipelineByPropertyName=$true)][String]$arg1,
[parameter(ValueFromPipelineByPropertyName=$true)][String]$arg2
)
Write-Host ($arg1 + " " + $arg2 + "!")
}
[pscustomobject]@{arg1="hello"; arg2="there"} | foo