-1

これは非常に明白な質問であるはずです...そして、提案された「重複した」回答を調べました...まさか...私の「ハードコードされたソリューションのみが機能します:-(私は1つのパラメーター(パス)が必要です。 Start-Job - ScriptBlock {} コマンドで、これが私のシナリオです。

$MyVariable = "C:\TestPath\Load.ps1"
Start-Job -ScriptBlock { C:\TestPath\Load.ps1 ; while($true) { Get-DataX | Add-ToTable "XXX" ; Start-sleep -s 120}}

これは問題なく動作しますが、ハードコードされています。私が試した多くの解決策のうち、成功しなかったもののいくつかを次に示します。

Start-Job -ScriptBlock { Get-ChildItem "$MyVariable" ; while($true) { Get-DataX | Add-ToTable "XXX" ; Start-sleep -s 120}}
Start-Job -ScriptBlock { param($MyVariable) Get-ChildItem "$MyVariable" ; while($true) { Get-DataX | Add-ToTable "XXX"; Start-Sleep -s 10 }} -Name MyTest #-ArgumentList @($MyVariable)
Start-Job -ScriptBlock { Get-ChildItem "$MyVariable" ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}}
Start-Job -ScriptBlock { "$MyVariable" ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}}
Start-Job -ScriptBlock { '$MyVariable' ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}}
Start-Job -ScriptBlock { using:$MyVariable ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}}
Start-Job -ScriptBlock { "using:$MyVariable" ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}}
Start-Job -ScriptBlock { $args[0] ; while($true) { Get-DataX | Add-toTable "XXX" ; Start-sleep -s 10}} -Argumentlist@($MyVariable")

しかし、どれも機能しません...では、 Start-Job -ScriptBlock {...} 行内に $MyVariable を渡すにはどうすればよいですか? 多分私の問題はどこかから来ていますか?アイデアは大歓迎です...

ありがとう !

フィリップ

4

1 に答える 1

0

これは次のようになります。

Start-Job -ScriptBlock {
    param($MyVariable) 
        Get-ChildItem $MyVariable; 
        while($true) 
        { Get-DataX ; Start-sleep -s 120}
    } -ArgumentList $MyVariable

これは、Powershell のスクリプト ブロックについて詳しく知るのに役立つ素晴らしい記事です。

于 2018-11-17T13:05:45.087 に答える