2016-09-28 3 views
0

この作業の目的は、単純な.batスクリプトをPowerShellジョブとして実行することです。出力の最後のエラーメッセージを除いて正しく動作するように見えます。Start-Jobを実行するディレクトリを指定する方法はありますか?

PowerShellはどこからジョブを開始するディレクトリを取得しますか?それが使用する場所は、私のデフォルトのWindows "documents"ディレクトリです。私の組織は、ローカルディスク上の「マイドキュメント」ディレクトリの使用を許可していません。

Start-Jobを実行する初期ディレクトリを指定できますか?もしそうなら、どうですか?

PS C:\src\powershell> Get-Content .\sayhi.bat 
SET EXITCODE=0 
ECHO hi 
EXIT /B %EXITCODE% 

PS C:\src\powershell> Start-Job -ScriptBlock {& "C:\Windows\System32\cmd.exe" "/C", "C:\src\powershell\sayhi.bat"} 

Id  Name   PSJobTypeName State   HasMoreData  Location    Command 
--  ----   ------------- -----   -----------  --------    ------- 
1  Job1   BackgroundJob Running  True   localhost   & "C:\Windows\System32... 


PS C:\src\powershell> Get-Job 

Id  Name   PSJobTypeName State   HasMoreData  Location    Command 
--  ----   ------------- -----   -----------  --------    ------- 
1  Job1   BackgroundJob Completed  True   localhost   & "C:\Windows\System32... 

PS C:\src\powershell> Receive-Job -Id 1 -Keep 

20:15:27.33 C:\Windows 
C:>SET EXITCODE=0 

20:15:27.33 C:\Windows 
C:>ECHO hi 
hi 

20:15:27.35 C:\Windows 
C:>EXIT /B 0 
'\\AHOST\USERS\pwatson\My Documents' 
    + CategoryInfo   : NotSpecified: ('\\AHOST\USERS\pwatson\My Documents':String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 
    + PSComputerName  : localhost 

CMD.EXE was started with the above path as the current directory. 
UNC paths are not supported. Defaulting to Windows directory. 

答えて

0

あなたは... -InitializationScriptパラメータに渡されたScriptBlock

Start-Job ` 
    -InitializationScript { Set-Location $Env:TEMP } ` 
    -ScriptBlock { & "C:\Windows\System32\cmd.exe" "/C", "C:\src\powershell\sayhi.bat" } 

を初期ディレクトリを変更することができます...またはあなたが既に使用しているScriptBlockであなたのバッチファイルを呼び出すだけで前に...

Start-Job -ScriptBlock { 
    Set-Location $Env:TEMP; 
    & "C:\Windows\System32\cmd.exe" "/C", "C:\src\powershell\sayhi.bat" 
} 
関連する問題