[英]Set Executable's Working Directory When PowerShell Remoting
我正在使用PowerShell遠程處理在遠程服務器上執行exe文件。 問題是exe需要將其工作目錄設置為exe所在的目錄才能使其正常運行。 如果我從命令提示符本地(在服務器上)運行exe它工作正常,如果我使用Enter-PSSession(從我的工作站)然后使用Start-Process -FilePath [PathToExe] -WorkingDirectory [DirectoryPath]
工作正常,但是如果我使用Invoke-Command -ComputerName [Blah] -ScriptBlock [MyScriptBlock]
或$session = New-PSSession -ComputerName [Blah]; Invoke-Command -Session $session -ScriptBlock [MyScriptBlock]
$session = New-PSSession -ComputerName [Blah]; Invoke-Command -Session $session -ScriptBlock [MyScriptBlock]
(來自我的工作站)然后工作目錄沒有設置。
這就是[MyScriptBlock]的樣子:
$scriptBlock = {
param($version, $database)
$hubSyncronizerExeDirectoryPath = "C:\inetpubLive\ScheduledJobs\$version\"
$hubSyncronizerExePath = Join-Path $hubSyncronizerExeDirectoryPath 'Test.exe'
Set-Location -Path $hubSyncronizerExeDirectoryPath
Get-Location
Write-Output "$version $database"
Start-Process -FilePath $hubSyncronizerExePath -WorkingDirectory $hubSyncronizerExeDirectoryPath -ArgumentList '/database',$database
}
我也嘗試過使用Invoke-Command而不是Start-Process,但它具有相同的效果; 工作目錄未設置。
我已經通過使用SysInternals Process Explorer驗證了這一點,右鍵單擊該進程並選擇Properties。 當我在本地啟動它或使用Enter-PSSession時,會設置命令行和當前目錄屬性,但在使用New-PSSession或僅使用帶有ComputerName的Invoke-Command時則不會。
我正在使用Set-Location
和設置-WorkingDirectory
,這是設置工作目錄的兩種典型推薦方法, Get-Location
確實顯示了預期的(服務器的本地)路徑(例如C:\\ inetpubLive \\ ScheduledJobs \\ 1.2) .3.4)。 我猜這只是PowerShell的一個錯誤(我在工作站和服務器上使用V4),或者可能是我缺少的東西?
事實證明,工作目錄是一個紅色的鯡魚(至少,我認為是)。 出於某種原因,如果我從命令提示符調用可執行文件,一切正常。
所以在我的Invoke-Command(我用Invoke-Command取代了Start-Process)中,改變了這個:
& ""$hubSyncronizerExePath"" /database $database
對此:
& cmd /c ""$hubSyncronizerExePath"" /database $database
解決了這個問題。
謝謝你的所有建議:)
試着看看New-PSDrive ,看看是否有幫助
我想你會想要類似的東西
New-PSDrive -Name WorkingDir -PSProvider FileSystem -Root“\\\\ RemoteServer \\ c $ \\ inetpubLive \\ ScheduledJobs \\ 1.2.3.4”
CD WorkingDir:
我假設您應該能夠修改您的腳本以包含並將$ version變量放入New-PSDrive命令的路徑中...
不確定這會做你需要做的事情,但這是首先想到的事情......
或者,嘗試修改腳本,如下所示:
$ hubSyncronizerExeDirectoryPath =“\\\\ remoteserver \\ C $ \\ inetpubLive \\ ScheduledJobs \\ $ version \\”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.