你如何在PowerShell中维护状态?

时间:2013-05-13 13:55:15

标签: powershell

假设我编写了一个带有一些离散函数的POSH脚本。

一个函数称为Login,它返回一个auth令牌(字符串类型),另一个函数使用该令牌调用API。如果已经执行了Login并且获得了身份验证令牌,则每次用户调用API时我都不想调用Login。该令牌仅持续一个会话 - 它不需要持久保存到数据库/磁盘等。

我在哪里维护身份验证令牌?是否由用户在其POSH会话中存储令牌?无论如何,我可以在我的剧本中为他们做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以使用像全局变量一样简单的东西。

$global:MyToken = 'SomeToken'

但更灵活的是做remoting sessions之类的事情。会话不仅仅是一个字符串,而是一个具有所需属性或方法的类。由于它是一个类,其他命令可以看到它是一个会话而不仅仅是一个字符串。有了这个,你可以做这样的事情:

$session1 = New-MySession -Name Jimmy -Password Secret
$session2 = New-MySession -Name Bob -Password 1234
MyAction -Session $session1 
MyOtherAction -Session $session1 
MyOtherAction -Session $session2
MyYetAnotherAction -Session $session1, $session2
Export-Session $session1 C:\temp\somefile.ses