我想将逗号分隔的值列表传递到脚本中作为单个开关的一部分.
这是程序.
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删除了逗号,为了保留它们我需要更改什么?
如果我运行命令
$ 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)
为什么决定在那里需要“--”字符?对我来说似乎没有必要。我知道它已被弃用,我只是想了解该决定背后的原因。
PowerShell 有几个语法特性,我找不到太多文档。今天我的问题是? {...}
例子
PS> Get-SPServiceInstance | ? {$_.GetType.toString() -eq $varname}
Run Code Online (Sandbox Code Playgroud)
我明白管道的意思。我很确定$_
用于在某种循环中引用当前项目。
有人可以解释一下这是什么意思吗?如果有人能指出我可以找到有关 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 脚本,所以我用几个 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 cmdlet时,我经常发现需要将切换设置为有限数量的选项,但我不知道它们是什么选项.我最终花了几个小时试图谷歌我想要的选项.有没有更好的办法?我曾尝试查看microsoft站点和Get-Help -examples,但这些都没有提供我想要的交换机的值.
这是一个例子.
Set-SPWebApplication <a couple of switches...> -AuthenticationMethod <String>
Run Code Online (Sandbox Code Playgroud)
-AuthenticationMethod的可接受值是什么?
这只是一个例子,但我遇到了很多问题.我认为Get-Help中应该有一些能够照亮我的东西,但这通常是无益的.