我有一个脚本,用于扫描服务器以查找包含共享的驱动器。之后,我需要它从已使用相同脚本创建的模板创建文件筛选器,该部分工作正常。
以下是我获取具有共享的驱动器列表的方法:
`$drivesContainingShares = @(Get-WmiObject Win32_Share |
Select Name,Path,Type |
Where-Object { $_.Type -match '0|2147483648' } |
Select -ExpandProperty Path |
Select -Unique)`
这是 $drivesContainingShares 的输出
PS C:\> $drivesContainingShares
C:\Windows
C:\
我无法运行命令来为包含共享的每个驱动器创建文件屏蔽。我必须在很多服务器上运行这个命令,有什么想法吗?
我现在的情况是这样的:如果我手动在第一行输入路径,我可以创建一个文件屏蔽。但我需要自动执行,因为每个服务器都有不同的共享。
$newFileScreen = New-FsrmFileScreen -Path $drivesContainingShares -Template $fileTemplateName
$drivesContainingShares | ForEach{$newFileScreen}
我已经尝试了很多不同的方法。我收到类似“无法验证参数‘Path’上的参数”的错误。该参数为空或为空。
答案1
好吧,我只需要坚持一会儿,但我找到了答案。我将 for-each 语句更改为以下内容:
foreach ($_ in $drivesContainingShares)
{New-FsrmFileScreen -Path $_ -Template $fileTemplateName}
然后我删除了这些行。
$newFileScreen = New-FsrmFileScreen -Path $drivesContainingShares -Template $fileTemplateName
$drivesContainingShares | ForEach{$newFileScreen}
现在我的文件屏蔽已经创建好了!