在PowerShell中,throw $ErrorMsg和之间有什么区别$PScmdlet.ThrowTerminatingError($ErrorMsg)?
它们是相同还是不同?如果它们不同哪一个更好?
我在课程材料中查看代码,并且必须编写一个函数,将值99添加到a list或tuple.最终代码如下所示:
def f(l):
print(l)
l += 99,
print(l)
f([1,2,3])
f((1,2,3))
Run Code Online (Sandbox Code Playgroud)
这被用来表示不同的东西,但我有点挂在线上l += 99,.这里做的事情,就是创建一个包含99和迭代list,以及tuple支持这样的对象的简单的"加法"来创建一个新的实例/添加了新的元素.
我真正得到的是使用语法创建的是什么element,?如果我喜欢一个分配x = 99,的type(x)会tuple,但如果我尝试运行x = tuple(99)的99是不是可迭代就会失败.所以有:
element,?tuple没有迭代,并以某种方式,映射到那个?编辑:如果有人想知道为什么接受的答案是那个:我的第二个问题的解释成功了.我应该对我的问题更清楚,但这+=实际上让我感到困惑,这个答案包含了相关信息.
虽然我可以获得处理请求所花费的时间的微秒分辨率(%D),以帮助重建请求序列,我想看一下与特定页面生成的多个请求的时间相关的请求.但据我所知,%t说明符仅提供精确到最接近的秒.这使得无法重建原始事件序列.
有没有其他方法可以在我的access_log文件中获取此信息?
TIA
我正在编写一个脚本来启动VM,如果它当前没有运行.我知道这样做的命令,但我的语法有问题.
在此脚本中,我想选择一个虚拟机,如果它处于关闭状态,我的脚本就会启动它,但如果虚拟机处于打开状态,则脚本会显示一条消息"虚拟机正在运行".
这时我写了一个脚本,但语法不正确:
if (Get-VM | Format-Table name, state -eq running) {
Write-Host -ForegroundColor red "VM running
}
else(start-vm -name "name")
Run Code Online (Sandbox Code Playgroud) 我目前正在编写一段代码,该代码组合一个字符串以根据各种信息识别一个对象。其中一些信息可能并不总是可用,我想知道是否有聪明的方法使组装更容易?
作为一个例子,我们有件$a,$b并$c认为建立最终的标识符。其中$b可能是空的,最终的字符串应包含由空格分隔的每个组件。一种选择是为$b字符串本身添加额外的空间,如下所示:
$a = "FirstPart"
$b = " SecondPart"
$c = "FinalPart"
Write-Output "$a$b $c"
#FirstPart SecondPart FinalPart
$b = ""
Write-Output "$a$b $c"
#FirstPart FinalPart
Run Code Online (Sandbox Code Playgroud)
另一种选择是有一个条件(可能会变得相当复杂和冗长):
$a = "FirstPart"
$b = "SecondPart"
$c = "FinalPart"
if($b -eq ""){
Write-Output "$a $c"
}else{
Write-Output "$a $b $c"
#FirstPart SecondPart FinalPart
}
$b = ""
if($b -eq ""){
Write-Output "$a $c"
#FirstPart FinalPart
}else{
Write-Output "$a $b $c"
}
Run Code Online (Sandbox Code Playgroud)
实际上非常需要的是使用-join …
我有一个非常简单的替换功能.它通过一个IP地址列表并替换前3个八位字节.它们似乎必须按特定顺序排列,为什么?
工作:
$testips = Import-CSV Test.csv
function change_PROD_IP
{
$PROD_oldIP = $line.NodeIP
$PROD_newIP = $line.NodeIP -replace "10.245.0.","10.165.221." `
-replace "10.245.14.","10.165.233." `
-replace "10.245.15.","10.165.234." `
-replace "10.245.12.","10.165.236." `
-replace "10.245.13.","10.165.237." `
-replace "10.245.1.","10.165.222." `
Add-Content -Path Production_Nodes_Test.csv -Value "$PROD_Oldip, $PROD_newIP"
}
foreach ($line in $testips) {change_PROD_ip}
Run Code Online (Sandbox Code Playgroud)
但如果我采取最后一行并把它放在第一位:
-replace "10.245.1.","10.165.222." `
Run Code Online (Sandbox Code Playgroud)
然后它开始使用这一行来替换10.245.12/13/14即第三个八位字节以1开头的任何东西.为什么会这样,因为它是带有"."的显式定义.1之后?