这似乎是一件非常容易的事;但是,我对WMI一无所知。我如何确定是否通过我的一台服务器上的网络共享目录(使用PowerShell)?另外,是否有一个快速入门,我可以阅读,以获得WMI?我真的希望能够在编写脚本时使用它,但是大多数资源都没有显示PowerShell的任何示例。
目前,我正在检查“服务器”服务是否正在运行;并检查特定组是否对目录具有权限。
$serversrvc = Get-Service -Name "Server"
$dirpath = "C:\My\Path\"
$pathacl = (Get-Acl -path $dirpath).Access
$group = "Domain\User"
# Test if the "Server" service is running
If ($serversrvc.Status -eq "Running")
{
echo '"Server" service is running.'
}
Else
{
echo '"Server" is NOT running.'
}
# Test if the $dirpath exists
If (Test-Path $dirpath)
{
echo "$dirpath exists."
}
Else
{
echo "$dirpath does not exist."
}
# Test if $group has permssions on $dirpath
foreach ($id in $pathacl)
{
If ($id.IdentityReference -eq $group)
{
echo "$group has access to $dirpath"
}
}
答案 0 :(得分:5)
Win32_Share WMI类返回计算机上所有共享文件夹的实例。这将为您提供本地计算机上的所有共享文件夹:
Get-WmiObject -Class Win32_Share
注意Path属性,你可以使用Filter参数(相当于WQL WHERE子句)来获取某些本地路径的共享,但你还需要加倍每个斜杠(斜杠是:
Get-WmiObject -Class Win32_Share -ComputerName PC1 -Filter "Path='C:\\Windows'"
如果您返回结果,则共享文件夹,否则不共享。注意ComputerName参数,您可以对远程计算机执行wmi命令。
要获取布尔结果,如果共享文件夹,则为true,否则为false,将命令转换为bool:
[bool](Get-WmiObject -Class Win32_Share -ComputerName PC1 -Filter "Path='C:\\Windows'")
答案 1 :(得分:1)
您可以使用Get-WmiObject Win32_Share
枚举计算机上的共享。您也可以使用net share
,但是您必须解析输出,以及为什么在拥有WMI输出时会烦恼。 : - )