在调用New-Item以使用UNC路径在外部计算机上创建目录时,我看到了竞争条件。代码如下:
New-Item $target -itemType Directory -Force -Verbose |
%{ Write-Host "Creating dir" $_.FullName }
之后立即使用Test-Path返回false。我把测试路径 - >睡眠1秒重试循环,睡眠1秒后,Test-Path返回true。
New-Item是阻止通话吗?我应该在打电话给New-Item后等待吗?
答案 0 :(得分:0)
我无法重现你的问题。
PS > New-Item "test" -itemType Directory -Force -Verbose | %{ Test-Path $_.FullName }
VERBOSE: Performing the operation "Create Directory" on target "Destination: C:\Users\Frode\Desktop\test".
True
New-Item
通过获取父目录的DirectoryInfo - 对象并调用它CreateSubDirectory来创建一个新目录,如:
DirectoryInfo subdirectory = new DirectoryInfo(parentPath).CreateSubdirectory(childName);
我不是开发人员,但是AFAIK意味着它是一个阻塞调用,因为它等待DirectoryInfo
- 对象作为回报。所以mabe问题在于您的存储子系统。
答案 1 :(得分:0)
尝试在另一个进程中运行New-Item
命令并等待它:
Start-Process powershell -Argument "-Command `"New-Item `"$myNewDir`" -ItemType `"directory`"`"" -NoNewWindow -Wait
我正在编写一个脚本来创建一个文件夹,然后将7zip存档写入该文件夹,但是7zip会抱怨该目录不存在。这似乎解决了这个问题。