在原始 PowerShell 控制台中,可以在执行之前粘贴和编辑多行命令
例如这个多行脚本:
Write-Host "===== 1 ====="
Write-Host "===== 2 ====="
Write-Host "===== 3 ====="
Write-Host "===== 4 ====="
Run Code Online (Sandbox Code Playgroud)
产生以下输出
不幸的是,在 Windows 终端中粘贴相同的脚本会产生截然不同的输出
有什么想法如何“修复”Windows 终端中的多行粘贴吗?
我有一个理论问题 - 如何在初始化期间引用哈希表,例如,计算基于其他已经声明的成员的成员.
Remove-Variable myHashTable -ErrorAction Ignore
$myHashTable =
@{
One = 1
Two= 2
Three = ??? # following expressions do not work
# $This.One + $This.Two or
# $_.One + $_.Two
# $myHashTable.One + $myHashTable.Two
# ????
}
$myHashTable.Three -eq 3 # make this $true
Run Code Online (Sandbox Code Playgroud)
有什么想法怎么做?它真的可能吗?
编辑:这是我的解决方案:
$myHashTable =
@{
One = 1
Two= 2
}
$myHashTable.Three = $myHashTable.One + $myHashTable.Two
Run Code Online (Sandbox Code Playgroud) 在使用XmlSerializer反序列化到.NET对象后,如何在xml标记的原始xml文件中获得位置?
这是一个示例XML
<ArrayOfAddressDetails>
<AddressDetails>
<Number>4</Number>
<Street>ABC</Street>
<CityName>Bern</CityName>
</AddressDetails>
<AddressDetails>
<Number>3</Number>
<Street>ABCD</Street>
<CityName>Prague</CityName>
</AddressDetails>
</ArrayOfAddressDetails>
Run Code Online (Sandbox Code Playgroud)
XML到C#对象映射
[XmlRoot("Root")]
public class AddressDetails
{
[XmlElement("Number")]
public int HouseNo;
[XmlElement("Street")]
public string StreetName;
[XmlElement("CityName")]
public string City;
}
Run Code Online (Sandbox Code Playgroud)
期望的结果
XmlSerializer serializer = new XmlSerializer(typeof(List<AddressDetails>));
var list = serializer.Deserialize(@"C:\Xml.txt") as List<AddressDetails>;
// this is what I would like to do
// getting information to origin of the property City of the 2nd object in the list
var position = XmlSerializerHelper.GetPosition(o => list[1].City, @"C:\Xml.txt");
// should print …Run Code Online (Sandbox Code Playgroud) JavaScript 中有调试器;停止执行并充当断点的语句。在 C# 中,有Debugger.Break()方法,其行为几乎相同。PowerShell 中是否存在类似的东西?