PS脚本从Excel获取数据,然后删除共享文件夹上的权限

时间:2019-01-28 06:53:16

标签: excel powershell

我正在创建一个简单的脚本来删除用户对共享驱动器文件夹的许可。我在excel文件中有用户名和共享驱动器文件夹。只有两列,其中一列为路径,另一列为用户名。

这是我对脚本所做的

$file = "C:\share\LanguagePack\testing.xlsx"
$SheetName = "Sheet1"
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
$WorkBook = $objExcel.Workbooks.Open($file)
$WorkSheet = $WorkBook.Sheets.Item($SheetName)
$WorkSheetRange = $WorkSheet.UsedRange
$RowCount = $WorkSheetRange.Rows.Count
$ColumnCount = $WorkSheetRange.Columns.Count


for ($num2=1, $num2 -lt $RowCount, $num2++) {

    $output = $WorkSheet.cells.Item($num2, 1).text
    $output1 = $WorkSheet.cells.Item($num2, 2).text

    icacls $output /remove:g $output1 /t

}

但是我得到

无法将“ 1”与“ 3 3”进行比较。错误:“无法转换“ System.Object []” 类型为“ System.Int32”的“ System.Object []”类型的值。 在C:\ share \ LanguagePack \ Untitled1.ps1:26 char:6 + for($ num2 = 1,$ num2 -lt $ RowCount,$ num2 ++){ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:InvalidOperation:(:) [],RuntimeException     + FullyQualifiedErrorId:比较失败

有什么想法或提示吗?谢谢

2 个答案:

答案 0 :(得分:0)

尝试一下:

$file = "C:\share\LanguagePack\testing.xlsx"
$SheetName = "Sheet1"
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
$WorkBook = $objExcel.Workbooks.Open($file)
$WorkSheet = $WorkBook.Sheets.Item($SheetName)
$WorkSheetRange = $WorkSheet.UsedRange
$RowCount = $WorkSheetRange.Rows.Count
$ColumnCount = $WorkSheetRange.Columns.Count

for($row=1; $row -le $RowCount; $row++) {

    $output = $WorkSheet.cells.Item($row, 1).text
    $output1 = $WorkSheet.cells.Item($row, 2).text

    icacls $output /remove:g $output1 /t
}

答案 1 :(得分:0)

正如我已经评论过的那样,您犯的错误是在,循环中使用逗号foreach而不是分号;

逗号使Powershell认为它是某种数组,因此出现错误

"Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Int32""

这应该有效:

for ($num2=1; $num2 -lt $RowCount; $num2++) {

    $output = $WorkSheet.cells.Item($num2, 1).text
    $output1 = $WorkSheet.cells.Item($num2, 2).text

    icacls $output /remove:g $output1 /t
}