code: public function junction($target, $junction)
      {
          if (!Platform::isWindows()) {
              throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__));
          }
          if (!is_dir($target)) {
              throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target);
          }
          $cmd = sprintf(
              'mklink /J %s %s',
              ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)),
              ProcessExecutor::escape(realpath($target))
          );
          if ($this->getProcess()->execute($cmd, $output) !== 0) {
              throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target);
          }
          clearstatcache(true, $junction);
      }
docs: Creates an NTFS junction.
  
  @param string $target
  @param string $junction