diff --git a/src/test/RUNTESTLIB.PS1 b/src/test/RUNTESTLIB.PS1
index 5189cabbf6e358aee5878dc96e91fe2824356dde..72687990d815237350b5b5f145630c94f5750d0a 100644
--- a/src/test/RUNTESTLIB.PS1
+++ b/src/test/RUNTESTLIB.PS1
@@ -365,32 +365,49 @@ if ($Env:NON_PMEM_FS_DIR -And (-Not (isDir($Env:NON_PMEM_FS_DIR)))) {
     throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR doesn't exist"
 }
 
-$PMEMDETECT="..\x64\Debug\tests\pmemdetect.exe"
+# run this code in the separate thread to not pollute PATH variable in user shell.
+Start-Job -Name $name -Args $PSScriptRoot -ScriptBlock {
+    param ([string]$dir)
+    cd $dir
+
+    # in script block there is no access to other functions
+    function isDir {
+        if (-Not $args[0]) {
+            return $false
+        }
+        return Test-Path $args[0] -PathType Container
+    }
 
-if (-Not (Test-Path $PMEMDETECT)) {
-    $PMEMDETECT="..\x64\Release\tests\pmemdetect.exe"
-}
+    $PMEMDETECT="..\x64\Debug\tests\pmemdetect.exe"
 
-if (isDir($Env:PMEM_FS_DIR)) {
-    if ($Env:PMEM_FS_DIR_FORCE_PMEM -eq "1") {
-        # "0" means there is PMEM
-        $Local:PMEM_IS_PMEM = "0"
+    if (-Not (Test-Path $PMEMDETECT)) {
+        $PMEMDETECT="..\x64\Release\tests\pmemdetect.exe"
+        $Env:Path =  "..\x64\Release\libs;" + $Env:Path
     } else {
-        &$PMEMDETECT $Env:PMEM_FS_DIR
-        $Local:PMEM_IS_PMEM = $Global:LASTEXITCODE
+        $Env:Path =  "..\x64\Debug\libs;" + $Env:Path
     }
 
-    if ($Local:PMEM_IS_PMEM -ne "0") {
-        throw "error: PMEM_FS_DIR=$Env:PMEM_FS_DIR does not point to a PMEM device"
-    }
-}
 
-if (isDir($Env:NON_PMEM_FS_DIR)) {
-    &$PMEMDETECT $Env:NON_PMEM_FS_DIR
-    $Local:NON_PMEM_IS_PMEM = $Global:LASTEXITCODE
+    if (isDir($Env:PMEM_FS_DIR)) {
+        if ($Env:PMEM_FS_DIR_FORCE_PMEM -eq "1") {
+            # "0" means there is PMEM
+            $Local:PMEM_IS_PMEM = "0"
+        } else {
+            &$PMEMDETECT $Env:PMEM_FS_DIR
+            $Local:PMEM_IS_PMEM = $Global:LASTEXITCODE
+        }
 
-    if ($Local:NON_PMEM_IS_PMEM -eq "0") {
-        throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR does not point to a non-PMEM device"
+        if ($Local:PMEM_IS_PMEM -ne "0") {
+            throw "error: PMEM_FS_DIR=$Env:PMEM_FS_DIR does not point to a PMEM device"
+        }
     }
-}
 
+    if (isDir($Env:NON_PMEM_FS_DIR)) {
+        &$PMEMDETECT $Env:NON_PMEM_FS_DIR
+        $Local:NON_PMEM_IS_PMEM = $Global:LASTEXITCODE
+
+        if ($Local:NON_PMEM_IS_PMEM -eq "0") {
+            throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR does not point to a non-PMEM device"
+        }
+    }
+} | Receive-Job -Wait -AutoRemoveJob