您现在的位置是:首页 > 正文

解决Powershell无法执行路径中包含空格的脚本文件

2024-04-01 02:05:53阅读 2

powershell执行路径中包含空格的脚本文件会报错,例如:

PS C:\WINDOWS\system32> powershell.exe 'C:\Program Files\datakit\test.ps1'
C:\Program : 无法将“C:\Program”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确
保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ C:\Program Files\datakit\test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Program:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\WINDOWS\system32>

这时可以借助powershell中的调用运算符 &, 比如:

PS C:\WINDOWS\system32> powershell.exe -c  "& 'C:\Program Files\datakit\test.ps1'"
Bypass
PS C:\WINDOWS\system32>

当然,如果当前已经处于powershell环境中,可以直接使用 &,而用powershell -c的调用方式可以在任意环境中,比如在CMD和程序中调用:

在powershell环境中:

PS C:\WINDOWS\system32> & 'C:\Program Files\datakit\test.ps1'
Bypass
PS C:\WINDOWS\system32>

在命令提示符(cmd.exe)下:

C:\WINDOWS\system32>& 'C:\Program Files\datakit\test.ps1'
此时不应有 &。
C:\WINDOWS\system32>
C:\WINDOWS\system32>powershell -c "& 'C:\Program Files\datakit\test.ps1'"
Bypass

C:\WINDOWS\system32>

调用运算符也可以用于调用变量:

PS> $c = "get-executionpolicy"
PS> $c
get-executionpolicy
PS> & $c
AllSigned

下面的示例展示了使用调用运算符和不使用的区别

PS C:\Scripts> Get-ChildItem

    Directory: C:\Scripts


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        8/28/2018   1:36 PM             58 script name with spaces.ps1

PS C:\Scripts> ".\script name with spaces.ps1"
.\script name with spaces.ps1
PS C:\Scripts> & ".\script name with spaces.ps1"
Hello World!

更多关于调用运算符 &的介绍

网站文章

  • Leakcanary检测泄漏流程原理分析

    Leakcanary检测泄漏流程原理分析

    内存泄漏指的是程序在向系统申请分配内存空间,使用完毕后未释放,结果导致一直占据该内存单元,程序无法再使用该内存单元

    2024-04-01 02:05:14
  • TypeSprict-1.语法小入门

    类型注解 类似于 function setString(name:String),如果在传入参数时非字符串类型,编译时会报错。接口typejs有接口并且不需实现,只需要在传入时符合接口的要求结构即可。interface Person{ firstName:string; lastName:string;}function greeter(person:Person){ return "...

    2024-04-01 02:05:07
  • java 之BufferedOutputStream的flush和close方法的区别

    java 之BufferedOutputStream的flush和close方法的区别

    BufferedOutputStream的flush和close方法的区别 * flush()方法 * 1.用来刷新缓冲区,刷新后可以再次写出 * close()方法 * 2.用来关闭流释放资源 * 3.如果是带缓冲区的流对象的close()方法,不但会关闭流,还会在关闭流之前刷新缓冲区,关闭之后不能再写入 package com.feng; import ...

    2024-04-01 02:04:59
  • 线程同步 CCriticalSection(临界区类)

    线程同步 CCriticalSection(临界区类) 当多个线程访问一个独占性共享资源时,可以使用“临界区”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被保护起来的资源或代...

    2024-04-01 02:04:19
  • 二维数组详解

    二维数组详解在Java中二维数组被看作为数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果...

    2024-04-01 02:04:11
  • Debug-CDK编译

    问题描述: make: *** No rule to make target ‘…/…/…/…/…/…/…/xxx.c’, needed by ‘Obj/xxx.o’. Stop. 解决方法: 删掉obj文件夹,重新编译

    2024-04-01 02:04:04
  • C++ 派生类覆盖重载基类函数

    派生类希望基类重载函数可见,情况有三种:     a)派生类中覆盖某个版本,则某个版本可见,全部都覆盖重写,则全部版本可见。     b)派生类中一个也不覆盖,则全部基类版本可见。     c)派生类需要添加新的重载版本,同时又需要可见基类的重载版本,此时并不是必须全部覆盖重写全部版本。可在派生类中用using声明基类重载的函数。       说明:对派生类没有重新定义的重载版本的访问实际...

    2024-04-01 02:03:27
  • npm基础

    简要介绍前端发展情况,介绍npm

    2024-04-01 02:03:19
  • 线性基入门

    今天学习了神奇的线性基,主要是在解决异或问题时比较有用。 假如我们的数字的二进制在x位上都是1(这里指所有的数字总共),那么我们线性基的集合就是x个数字,对应的他们最高位的1分别出现在这x个位置,我们...

    2024-04-01 02:03:12
  • 乔治亚理工计算机在线申请,经验分享:佐治亚理工学院CS PhD申请总结

    乔治亚理工计算机在线申请,经验分享:佐治亚理工学院CS PhD申请总结

    经验分享:佐治亚理工学院CS PhD申请总结2020-11-07 493人阅读摘要:经验分享:佐治亚理工学院CS PhD申请总结下午到试验室开启msn和hotmail就收到了GIT的Offer:“.....

    2024-04-01 02:03:04