Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/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:给定一个字符串,我如何知道我处理的是哪种类型的路径?_Powershell - Fatal编程技术网

Powershell:给定一个字符串,我如何知道我处理的是哪种类型的路径?

Powershell:给定一个字符串,我如何知道我处理的是哪种类型的路径?,powershell,Powershell,例如,我可以键入gci hkcu:并获取注册表项列表,或者键入gci c:\并获取目录列表 假设$list包含其中一个查询的结果,我如何知道我在处理什么 当然,我可以执行类似于$list[0].GetType()的操作并解析结果,但这不是很健壮,而且,对于空列表我该怎么办?(这意味着我可能问错了问题,因为我认为我需要在实际调用gci之前知道答案)最简单的方法是处理传递到gci的内容,而不是尝试处理输出。然后,您所要做的就是查看:,或者在最坏的情况下检查“本地”目录。您可以执行以下操作: $pa

例如,我可以键入
gci hkcu:
并获取注册表项列表,或者键入
gci c:\
并获取目录列表

假设
$list
包含其中一个查询的结果,我如何知道我在处理什么


当然,我可以执行类似于
$list[0].GetType()
的操作并解析结果,但这不是很健壮,而且,对于空列表我该怎么办?(这意味着我可能问错了问题,因为我认为我需要在实际调用
gci
之前知道答案)

最简单的方法是处理传递到gci的内容,而不是尝试处理输出。然后,您所要做的就是查看
,或者在最坏的情况下检查“本地”目录。

您可以执行以下操作:

 $path = "HKCU:"
 $qualifier = (split-path $path -Qualifier).Trim(":")
 get-psdrive | ?{ $_.Name -eq $qualifier } | select provider
如果路径是相对路径,请使用
解析路径$path

此外,您不必在路径上使用
gci
。您可以使用
gi

(gi hkcu:).gettype()

在试图围绕这个问题进行编码时,我偶然发现了答案:

(获取ItemProperty$path).PSProvider.Name


这将返回
Get-PSProvider
中列出的其中一个提供程序,它们(通常)是不变的。

这样做的一个问题是,这对以下内容不起作用:
cd hkcu:;gci
。忽略我之前的评论,我没有立即搜索您的“最坏情况”行。假设$list包含其中一个查询的结果:@($list)[0]。PSProvider.Name