如何将负数传递给PowerShell中的网络文件调用

时间:2017-02-20 19:13:16

标签: powershell

我有一个关闭网络共享上文件的脚本。

现在,每当返回像此-335362046这样的负面文件ID时,我的命令就不再起作用了。

我想PowerShell认为这个数字是一个参数,因为开头是-。我如何正确地逃避这一点,使我的呼叫同时适用于正数和负数?

net files $_.ID /close > $null

1 个答案:

答案 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会给你语法错误。