我在 Windows Server 2008r2 上有一些脚本,可以使用有限的凭据访问其他服务器系统上的特定资源。如果某人或其他脚本也使用不同的凭据从此服务器访问了该系统并且没有注销,则脚本将失败并显示Error 1219 "The network folder specified is currently mapped using a different user name and password"
如何确保我的脚本在尝试映射新驱动器之前删除与该特定计算机的所有连接?
C:\> net use //server /d
Run Code Online (Sandbox Code Playgroud)
本身不起作用。我可以跟进并net use看到驱动器仍然共享:
C:\> net use \\server /d
\\server was deleted successfully.
C:\> net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
Disconnected \\server\somedrive Microsoft Windows Network
The command completed successfully.
Run Code Online (Sandbox Code Playgroud)
断开的驱动器仍然会导致相同的情况Error 1219。
任何人都可以提出比删除该计算机上存在的所有共享的详尽列表更优雅的解决方案吗?
net use \\server\share1 /d
net use \\server\share2 /d
net use \\server\share3 /d
etc... …Run Code Online (Sandbox Code Playgroud) 我找到了一个我认为可以适应我的目的的 PowerShell 脚本。
它包含格式化输出的这一行:
$largeSizefiles = get-ChildItem -path $filesLocation -include $Extension -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length | Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
关键部分似乎是这样的:
Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于 Select-Object 的 ss64.com 教程,但我没有找到任何内容来解释 @{.....} 表单的表达式如何格式化文本。
该ss64.com上@操作显示它的格式页@(...),有括号,括号没有。
上面的代码导致以下输出:
Name : RPI-Image-1-Copy.img
Size In MB : 29,477
Path …Run Code Online (Sandbox Code Playgroud)