【发布时间】:2016-03-14 16:35:08
【问题描述】:
在我们开始编写代码之前,我有一个包含 PC 列表的 CSV,并且只有 1 列。目标是使用 A 列中标记为“计算机”的信息,并获取这些机器的所有服务,并将它们输出到基于 A 列信息创建的文件夹中。到目前为止,脚本如下:
Import-Module activedirectory
$Group=import-csv C:\Users\axb3055\Documents\CSV_Test.csv
$ServiceList = Test-Path C:\ServiceList
if($ServiceList -eq $true)
{Write-Host "Service List Exists"}
else
{
Write-Host "Creating ServiceList folder"
New-Item C:\ServiceList\$CompName -ItemType directory -ErrorActionSilentlyContinue | Out-Null
}
$Group | foreach {$CompName = $_.Computers New-Item -Path C:\ServiceList\$CompName -ItemType directory | Get-Service -ComputerName $_.Computers} | Out-File C:\ServiceList\$CompName\$CompName.txt
现在发生的是服务列表文件夹已创建,但之后没有任何反应。我在 for-each 块中得到一个指向“New-Item”的错误点,但我不确定它可能是什么。有什么想法吗?
【问题讨论】:
-
错误是什么?同样在
else中,您似乎使用-ErrorActionSilentlyContinue抑制了错误。删除它以进行调试。$CompName似乎为空,所以错误是文件夹已经存在?你在哪里设置$compname -
感谢您的快速响应。我已按照建议删除了 -errorAction。我得到的错误是:“表达式或语句中出现意外的令牌'New-Item'。”关于设置 $compname,这是我也不确定的一件事。我想将名称设置为 CSV 中 A 列中的数据。
-
我认为你需要一个管道“|”在 $_.Computers 和 New-Item 之间?但我可能弄错了..现在看起来很尴尬。
-
@krousemw 他最少需要一个分号,因为分号出现在两个单独的语句中。无论如何,这不是代码应该编写的方式。
-
@Matt 任何建议都会很棒,因为我有点迷路了。谢谢!
标签: csv powershell variables new-item