相关疑难解决方法(0)

在什么情况下设计使用`Invoke-Expression`?

如果您尝试使用Invoke-Expressioncmdlet,则有9/10次,有更好的方法.动态构建命令的参数?使用参数数组.构建cmdlet的参数?使用splatting与数组或哈希表.你的命令在它的路径中有空格?使用call运算符(&).

这似乎是开放式的,但它Invoke-Expression是一个易于访问的cmdlet,答案几乎总是永远不会使用它.但是cmdlet存在是有原因的,并没有被弃用,并且大多数批评它的使用状态类似于"它几乎从来都不是正确的答案",但从未说明何时可以使用它.在什么情况下可以使用Invoke-Expression?或者说它不那么公开,如何Invoke-Expression设计使用?

powershell

5
推荐指数
1
解决办法
130
查看次数

如何在 PowerShell 中转义特殊字符?

当我的 PowerShell 脚本运行时,它会提示用户输入密码参数。该密码可以包含任意数量的特殊字符,如 *\~;(%?.:@/ 然后该密码用作 .exe 命令的参数,但由于某些特殊字符没有正确转义,它通常不正确。

一个过去的密码示例是 $(?-.?-(。我需要转义的唯一字符是 '(',我将其替换为 '`(' 以使其工作。但是,该密码现在已过期。新密码类似于 *\~;~(%?.:@/ *注意:这些密码也混合了随机数字和字母,但已被编辑。

新密码中的唯一字符不是第一个是 *\~;%:@/ 是否有一种简单的方法可以转义所有字符并按原样接受任何用户输入?如果没有,有人介意帮我逃脱这些特殊字符吗?


param (
    [Parameter(Mandatory=$true)][string]$password
)
Run Code Online (Sandbox Code Playgroud)

上面的代码位于脚本的前面,使控制台提示用户输入。

Invoke-Expression -Command "<path_to_exe> -install $user $password"
Run Code Online (Sandbox Code Playgroud)

^这是使用该密码参数的命令


我在 Stack Overflow、Reddit 和其他各种编码论坛/博客上尝试了许多其他建议,但都没有奏效。任何帮助深表感谢!

parameters powershell escaping

3
推荐指数
2
解决办法
2万
查看次数

'kubectl patch' works on Linux Bash but not in Windows Powershell ISE

The following command works fine on Ubuntu bash:

kubectl patch deployment wapi-backend-d1 --patch '{"spec": {"template": {"metadata": {"labels": {"date": "test"}}}}}'
Run Code Online (Sandbox Code Playgroud)

The same command does not work in Windows Powershell Console (ISE).

The error is:

kubectl : Error from server (BadRequest): invalid character 's' looking for beginning of object key string
At line:1 char:1
+ kubectl patch deployment wapi-backend-d1 --patch '{"spec": {"template ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Error from serv...ject key string:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
Run Code Online (Sandbox Code Playgroud)

The powershell …

syntax powershell parameter-passing quoting kubectl

2
推荐指数
2
解决办法
423
查看次数

在PowerShell中运行命令行

我知道有很多与此相关的帖子,但对我没有任何帮助。

我正在尝试在PowerShell中运行以下命令行:

C:/Program Files (x86)/ClamWin/bin/clamd.exe --install
Run Code Online (Sandbox Code Playgroud)

我在PowerShell中有这个:

&"C:/Program Files (x86)/ClamWin/bin/clamd.exe --install"
Run Code Online (Sandbox Code Playgroud)

但这只是执行clamd.exe,忽略--install参数

如何获得完整的命令行来运行?

syntax powershell quoting

1
推荐指数
1
解决办法
1万
查看次数