2016-08-04 10 views
1

PowerShellで関数を定義し、さまざまな実行空間でそれを実行したいとI'would実行します。 は、私はこれを試してみました:はどのようにPowerShellの実行空間の中で関数を定義し、それが

Function Add-Message { 
    param(
    [parameter(mandatory=$true)][String]$pMessage 
    ) 
    ("--$pMessage--") | Out-File -FilePath "D:\Temp\test.log" -Append   
} 

$initialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::Create() 
$definition = Get-Content Function:\Add-Message -ErrorAction Stop 
$addMessageSessionStateFunction = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList 'Add-Message', $definition 
$initialSessionState.Commands.Add($addMessageSessionStateFunction) 

$newRunspace = [runspacefactory]::CreateRunspace($initialSessionState) 
$newRunspace.ThreadOptions = "ReuseThread" 
$newRunspace.Open() 
$newPowershell = [PowerShell]::Create() 
$newPowershell.AddScript({ 
    Add-Message -pMessage "New runspace" 
}) | Out-Null 
$newPowershell.Runspace = $newRunspace 
$newPowershell.BeginInvoke() | Out-Null 

メッセージ「新しい実行空間は、」ファイルtest.log にこのような何かをするために何かアドバイスを表示されませんか? おかげ

+0

これは私が回避しようとするものです。私は実行空間の多くを作成し、それのthats – Vik

答えて

0

はCreateDefaultメソッドを使用して、代わりにあなたの最初のセッションの状態を作成している時に作成します。あなたはより多くを持っていない場合、そのセッションの状態を実行可能にするように設定します。

$initialSessionState = [InitialSessionState]::CreateDefault() 

クリス

編集:例を追加しました。

+0

たら、関数の詳細を実装する必要はありません。 CreateDefaultで動作します。ありがとう! – Vik

関連する問題