在阅读Windows PowerShell 博客上这篇有用的文章后,我意识到我可以“移动”数组的第一部分,但不知道如何在 PowerShell 中“取消移动”或将元素推送到数组的前面。
我正在创建一个哈希对象数组,最后读取的项目首先推送到数组上。我想知道是否有更好的方法来实现这一点。
## Create a list of files for this collection, pushing item on top of all other items
if ($csvfiles[$collname]) {
$csvfiles[$collname] = @{ repdate = $date; fileobj = $csv }, $csvfiles[$collname] | %{$_}
}
else {
$csvfiles[$collname] = @{ repdate = $date; fileobj = $csv }
}
Run Code Online (Sandbox Code Playgroud)
有几点需要注意:
想法?
PS:空哈希元素产生 NULL 值的原因是 $null 在 PowerShell 中被视为标量。有关详细信息,请参阅https://connect.microsoft.com/PowerShell/feedback/details/281908/foreach-should-not-execute-the-loop-body-for-a-scalar-value-of-null。
回答:
看起来最好的解决方案是在必要时预先创建空数组,而不是围绕 $null 问题编写代码。下面是使用 .NET ArrayList …
我想在CSV输出中包含子类的值.子类包含几个指示可用操作的布尔值.
public class AllowedActions {
public bool CanCheckIn { get; set; }
public bool CanCheckOut { get; set; }
}
public class ContentItem {
public AllowedActions Actions { get; set; }
public Guid? ContentTypeId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我可以创建一个包含ContentItem属性和AllowedAction类值的类映射吗?将它们添加到地图会导致"属性'布尔CanCheckIn'未定义类型'XYZ.ContentItem'"错误.
这不起作用:
Map(m => m.Actions.CanCheckIn);
Map(m => m.Actions.CanCheckOut);
Run Code Online (Sandbox Code Playgroud) 有问题的文件是replicatorshared.log,它是我机器上最大的单个文件,甚至比 Windows 10 交换文件还要大。我可以停止集群并删除文件,在集群启动时它会再次创建。
我可以控制这个文件的初始大小吗?
这个文件是用来做什么的,一开始就需要这么大?