我正在创建一个简单的脚本来删除用户对共享驱动器文件夹的许可。我在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:比较失败
有什么想法或提示吗?谢谢
答案 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
}