使用Powershell审核权限

问题描述 投票:0回答:1

首先有一点背景:作为Scrum团队的一员,我被要求准备一个Powershell脚本,该脚本将整理已标记为可以安全地从提供给我的CSV文件进行存档的SMB共享列表。嵌套在一个文件夹结构中(每个共享相当于一个CSV文件,其中包含文件列表,但是唯一相关的是它们的标题为SHARENAME.csv),以及每个文件的当前权限(以防它们需要)在以后恢复。

目前,第一步,我要做到以下几点(很简单):

get-childitem -path 'C:\users\adam.lane\desktop\_with adam\_remove' | select BaseName | export-csv -path "..\test.csv"

这给了我一个CSV文件,并且在同一列中包含了所有188个共享的名称。第二步,为每个带有权限列表的CSV文件导出,效果也不理想。到目前为止,我有以下内容:

$share = Import-Csv -path 'C:\users\adam.lane\desktop\_with adam\test.csv' -Header 'BaseName'
ForEach ($share in $share) {
get-smbshareaccess -name $share -cimsession euukpopdfs005
}

显然,目前那里没有export-csv命令,但从本质上讲,我希望脚本使用与'get-smbshareaccess -name'相同的共享名作为CSV文件的文件名。不幸的是,这时我以以下格式遇到了188个错误:

get-smbshareaccess : euukpopdfs005: No MSFT_SMBShare objects found with property 'Name' equal to '@{BaseName=Brand}'.  Verify the value of the property and retry.
At line:3 char:1
+ get-smbshareaccess -name $share -cimsession euukpopdfs005
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (@{BaseName=Brand}:String) [Get-SmbShareAccess], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_Name,Get-SmbShareAccess
    + PSComputerName        : euukpopdfs005

因此,它没有调用BaseName(例如,在第一种情况下为“ Brand”),而是在调用(@ {BaseName = Brand}:String),然后它找不到任何东西。

反正我可以整理一下吗?理想情况下,以某种方式对Get-SmbShareAccess命令和export-csv命令都有效,但我不反对根据需要做更多的扑克游戏。

这是我的第一篇文章,因此,如果这太长,缺少详细信息等,我深表歉意。如果您还有其他需要,请告诉我!预先感谢。


建议后的最终(有效)代码:

    get-childitem -path 'C:\users\adam.lane\desktop\_with adam\_remove' | select BaseName | export-csv -path "..\test.csv"
$share = Import-Csv -path 'C:\users\adam.lane\desktop\_with adam\test.csv' -Header 'BaseName'
$share | Format-List
ForEach ($item in $share) {
get-smbshareaccess -name $item.BaseName -cimsession euukpopdfs005
}
powershell csv
1个回答
0
投票

最终工作代码(谢谢大家!):

© www.soinside.com 2019 - 2024. All rights reserved.