我试图更改多个文件上的"LastWriteTime“属性,以便使用随机数使它们不同。我用一些.txt文件创建了一个测试文件夹,我正在尝试更改属性。
这就是我目前的情况:
$path = "D:\Test\Test"
$array = @(Get-ChildItem -Path $path)
for($i = 0; $i -le $array.Count; $i++)
{
$randomNumber = Get-Random -Minimum 10 -Maximum 50
$array[$i].LastWriteTime = (Get-Date).AddMinutes($randomNumber)
}
错误消息声明:
“在此对象上找不到'LastWriteTime‘属性。”
但是,一旦我在Powershell ISE中运行了脚本/选择并将数组存储在内存中,我就可以单独地更改数组的成员,而无需使用以下戏剧:
$randomNumber = Get-Random -Minimum 10 -Maximum 50
$array[1].LastWriteTime = (Get-Date).AddMinutes($randomNumber)
有人能给出为什么我不能使用for循环更改数组成员的指针吗?
发布于 2022-05-27 06:59:13
我在Powershell7上测试了您的脚本,它为三个文件中的一个文件抛出了一个错误。有趣的是,日期正按所有人的预期进行更改。可能是这个模块的错误。
另一点是,如果我们使用For each
而不是For
,那么这个错误就不会出现。
$path = "C:\temp"
$array = @(Get-ChildItem -Path $path -Recurse)
Write-Host Before For each
$array | Select Name, LastWriteTime
$array |ForEach-Object {
$_.LastWriteTime = Get-Date
}
Write-Host After For each
$array | Select Name, LastWriteTime
https://stackoverflow.com/questions/72401285
复制相似问题