我有一个关闭网络共享上文件的脚本。
现在,每当返回像此-335362046
这样的负面文件ID时,我的命令就不再起作用了。
我想PowerShell认为这个数字是一个参数,因为开头是-
。我如何正确地逃避这一点,使我的呼叫同时适用于正数和负数?
net files $_.ID /close > $null
答案 0 :(得分:4)
文件ID不能为负数。列出文件ID的软件在应该使用uint32时显示int32(有符号整数),因此左侧的位(第32位)的值1
使得数字为负而不是添加{ {1}}。
你需要转换它,例如:
2147483648
输出:
function closefilehandle ($id) {
Write-Host "ID = $id"
#If negative id, convert to uint32
if($id -lt 0) { $id = [uint32]("0x{0:x}" -f $id) }
Write-Host "Closing handle $id"
net files $id /close
}
closefilehandle -id (-335362046)
输出是一个错误,但它是正确的错误,因为否定ID会给你语法错误。