2017-05-16 3 views
1

私はリモートPSセッションを作成する関数を持っています。私はセッションをインポートし、コードが実行されている間は、エクスポートされたすべてのコマンドを他の関数で利用できます。機能が完了すると、「利用可能な」PSセッションがありますが、エクスポートされたコマンドは後で使用できません。次に例を示します。関数の完了後にImport-PsSessionを使用できない

Function DoSomething{ 
    $lyncsession = New-CsOnlineSession -Credential (Get-Credential -Message "Authenticate to Skype for Business Online") 
    $remoteSession = Import-PSSession $lyncsession -AllowClobber | Out-Null 
} 

私は再び機能を実行したい場合は、私は昔のPSSessionを取り壊すと(すべてやり直す認証)新しいものを作成する必要があります。

関数内にPSSessionを作成し、関数の実行時にエクスポートされたコマンドレットを利用できるようにする方法はありますか?

ところで、私は関数の外でコマンドを実行する場合、これは問題ではありません。

答えて

0

セッションまたはスコープをセッションのスコープ内で実行させたい場合は、そのソースにドットを付けることができます。これにより、現在のスコープに変数が配置されます。そうでない場合は、指定したとおり、変数はfunction scopeになり、関数が完了した後は使用できなくなります。

. DoSomething 

そうしないと、関数内の変数を別のスコープにすることができます。グローバルスコープとスクリプトスコープのスコープの例

Function DoSomething{ 
    $script:lyncsession = New-CsOnlineSession -Credential (Get-Credential -Message "Authenticate to Skype for Business Online") 
    $global:remoteSession = Import-PSSession $lyncsession -AllowClobber | Out-Null 
} 
0

グローバル変数を定義してもこの問題は解決されません。私は単純にPSSessionを再インポートしなければなりませんでした(健全で使用可能な場合)。

関連する問題