Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell获取文件ID_Powershell_File - Fatal编程技术网

PowerShell获取文件ID

PowerShell获取文件ID,powershell,file,Powershell,File,是否可以使用PowerShell获取文件的ID? 我指的是你得到的ID,如果你使用fsutil.exe fsutil file queryFileID C:\temp 我知道这个比较老,但我看不出一个好的答案,所以我要扔掉一个@marzse的简短回答是正确的,没有PowerShell本机命令可以为您提供与fsutil相同的输出。如果文件在任何位置打开,则可以从get-SMBOpenFile获取int64文件ID。然后你可以用一些.NET魔法把它转换成十六进制 #gives us a 32 bi

是否可以使用PowerShell获取文件的ID? 我指的是你得到的ID,如果你使用
fsutil.exe

fsutil file queryFileID C:\temp

我知道这个比较老,但我看不出一个好的答案,所以我要扔掉一个@marzse的简短回答是正确的,没有PowerShell本机命令可以为您提供与fsutil相同的输出。如果文件在任何位置打开,则可以从get-SMBOpenFile获取int64文件ID。然后你可以用一些.NET魔法把它转换成十六进制

#gives us a 32 bit hex FileID for Comparison   
fsutil file queryFileID C:\temp 
#Get an int64 FileID
$int = Get-SMBOpenFile | Where-Object Path -eq "C:\temp" | Select-Object -Property FileID -Expand Property 
#Convert int64 to hex32 and append 0x
$temp = '{0:x32}' -f $int
$hex = '0x' + [string]$temp
#Compare the two
if($hex -eq "pasted Hex from fsutil") {Write-Output "True"}

这不是一个简单的答案,但写这篇文章所花的时间比我想出来的时间要长,所以我也不会说它复杂。如果你必须经常这样做,把它放到函数或脚本中,并在一天内调用它。

当然。运行
fsutil文件queryFileID“C:\path\to\file”
;-)我的意思不是fsutil,我是指没有exe的另一个方法,一个“powershell本机”。PS中有这么多函数,也许有人知道。我认为这些信息无法通过.NETAPI甚至WMI获得。据我所知,您需要Win32 API来访问这一(相当模糊的)信息。简短回答:否。长篇回答:您可能可以这样做,但必须编译大量自定义代码才能在PowerShell中调用Win API。使用fsutil会更容易。