小编Sta*_*hod的帖子

Powershell正在从程序参数中删除逗号

我想将逗号分隔的值列表传递到脚本中作为单个开关的一部分.

这是程序.

param(
  [string]$foo
)

Write-Host "[$foo]"
Run Code Online (Sandbox Code Playgroud)

这是用法示例

PS> .\inputTest.ps1 -foo one,two,three
Run Code Online (Sandbox Code Playgroud)

我希望这个程序的输出是,[one,two,three]但它返回[one two three].这是一个问题,因为我想使用逗号来区分值.

为什么powershell删除了逗号,为了保留它们我需要更改什么?

powershell

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

为什么 kubectl exec 需要一个 --?

如果我运行命令

$ kubectl exec pod-name echo Hello World 
Run Code Online (Sandbox Code Playgroud)

我收到一条弃用错误消息,要求我包含“--”字符。

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Run Code Online (Sandbox Code Playgroud)

为什么决定在那里需要“--”字符?对我来说似乎没有必要。我知道它已被弃用,我只是想了解该决定背后的原因。

kubernetes

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

PowerShell 短语“| ? {...}”是什么意思?

PowerShell 有几个语法特性,我找不到太多文档。今天我的问题是? {...}

例子

PS> Get-SPServiceInstance | ? {$_.GetType.toString() -eq $varname}
Run Code Online (Sandbox Code Playgroud)

我明白管道的意思。我很确定$_用于在某种循环中引用当前项目。

有人可以解释一下这是什么意思吗?如果有人能指出我可以找到有关 PowerShell 保留符号的地方,那就太好了。

powershell

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

PowerShell返回多个值

我正在编写PowerShell函数,我希望它返回一个布尔值.问题是PowerShell将返回管道中的任何内容,而不仅仅是返回语句中明确包含的内容.

请考虑以下代码.

function getTrue(){
  $testVariable = "test"
  $test
  return $true
}

$answer = getTrue

Write-host $answer
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是

test True
Run Code Online (Sandbox Code Playgroud)

这会返回一个System.Object[].我想强制返回值为a System.Boolean.

如果我添加一个Write-Host,这段代码工作正常:

function getTrue(){
  $testVariable = "test"
  Write-Host $test
  return $true
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我依赖于其他人正在编写的函数(我无法修改它),并且我无法保证他们使用了一个Write-Host而不是仅仅将变量留在行上.

有没有办法强制函数只返回我想要的值?

powershell

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

如何在缺少的 cmdlet 上不出错

我有很多 powershell 脚本,所以我用几个 cmdlet 创建了一个自定义日志记录 Powershell 模块。问题是我们无法让所有用户下载自定义模块并将其放入他们的 PSModulePath 中。

理想情况下,如果找不到 cmdlet,我希望脚本以静默方式继续运行并且不显示任何错误,但我还没有找到一个好的方法。现在我们收到这样的消息:

C:> foo-bar
foo-bar : The term 'foo-bar' is not recognized as the name of a cmdlet, function, script file, or operable program...
Run Code Online (Sandbox Code Playgroud)

设置 ErrorActionPreference 将抑制消息,但它也会抑制所有其他不需要的错误消息。

我可以在每个脚本中编写一个自定义函数,在调用自定义 cmdlet 之前检查模块是否正在加载,但似乎应该有更好的方法来做到这一点。

powershell module

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

Powershell获取变量选项

使用PowerShell cmdlet时,我经常发现需要将切换设置为有限数量的选项,但我不知道它们是什么选项.我最终花了几个小时试图谷歌我想要的选项.有没有更好的办法?我曾尝试查看microsoft站点和Get-Help -examples,但这些都没有提供我想要的交换机的值.

这是一个例子.

Set-SPWebApplication <a couple of switches...> -AuthenticationMethod <String>
Run Code Online (Sandbox Code Playgroud)

-AuthenticationMethod的可接受值是什么?

这只是一个例子,但我遇到了很多问题.我认为Get-Help中应该有一些能够照亮我的东西,但这通常是无益的.

powershell

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

标签 统计

powershell ×5

kubernetes ×1

module ×1