diff --git a/dist/setup/index.js b/dist/setup/index.js
index c1296851..e0cb9e7b 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -34463,9 +34463,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
 const glob = __importStar(__webpack_require__(281));
 const core = __importStar(__webpack_require__(470));
 const exec = __importStar(__webpack_require__(986));
+const child_process = __importStar(__webpack_require__(129));
+const util_1 = __importDefault(__webpack_require__(669));
 const path = __importStar(__webpack_require__(622));
 const os_1 = __importDefault(__webpack_require__(87));
 const cache_distributor_1 = __importDefault(__webpack_require__(435));
+const utils_1 = __webpack_require__(163);
 class PipCache extends cache_distributor_1.default {
     constructor(pythonVersion, cacheDependencyPath = '**/requirements.txt') {
         super('pip', cacheDependencyPath);
@@ -34473,7 +34476,18 @@ class PipCache extends cache_distributor_1.default {
     }
     getCacheGlobalDirectories() {
         return __awaiter(this, void 0, void 0, function* () {
-            const { stdout, stderr, exitCode } = yield exec.getExecOutput('pip cache dir');
+            let exitCode = 1;
+            let stdout = '';
+            let stderr = '';
+            // Add temporary fix for Windows
+            // Related issue: https://github.com/actions/setup-python/issues/328
+            if (utils_1.IS_WINDOWS) {
+                const execPromisify = util_1.default.promisify(child_process.exec);
+                ({ stdout: stdout, stderr: stderr } = yield execPromisify('pip cache dir'));
+            }
+            else {
+                ({ stdout: stdout, stderr: stderr, exitCode: exitCode } = yield exec.getExecOutput('pip cache dir'));
+            }
             if (exitCode && stderr) {
                 throw new Error(`Could not get cache folder path for pip package manager`);
             }
diff --git a/src/cache-distributions/pip-cache.ts b/src/cache-distributions/pip-cache.ts
index f4d7c242..44cfeeec 100644
--- a/src/cache-distributions/pip-cache.ts
+++ b/src/cache-distributions/pip-cache.ts
@@ -1,11 +1,13 @@
 import * as glob from '@actions/glob';
 import * as core from '@actions/core';
 import * as exec from '@actions/exec';
-
+import * as child_process from 'child_process';
+import utils from 'util';
 import * as path from 'path';
 import os from 'os';
 
 import CacheDistributor from './cache-distributor';
+import {IS_WINDOWS} from '../utils';
 
 class PipCache extends CacheDistributor {
   constructor(
@@ -16,9 +18,18 @@ class PipCache extends CacheDistributor {
   }
 
   protected async getCacheGlobalDirectories() {
-    const {stdout, stderr, exitCode} = await exec.getExecOutput(
-      'pip cache dir'
-    );
+    let exitCode = 1;
+    let stdout = '';
+    let stderr = '';
+
+    // Add temporary fix for Windows
+    // Related issue: https://github.com/actions/setup-python/issues/328
+    if (IS_WINDOWS) {
+      const execPromisify = utils.promisify(child_process.exec);
+      ({stdout: stdout, stderr: stderr} = await execPromisify('pip cache dir'));
+    } else {
+      ({stdout: stdout, stderr: stderr, exitCode: exitCode} = await exec.getExecOutput('pip cache dir'));
+    }
 
     if (exitCode && stderr) {
       throw new Error(