2016-07-26 5 views
0

Я пытаюсь перебрать список компьютеров Windows в домене, чтобы вызвать очистку диска, однако, поскольку путь, возвращаемый списком, не выполняет оператор ForEach с замененным именем. Может ли кто-нибудь дать некоторые рекомендации о том, как сделать эту работу?Контур Powershell для вызова Очистка диска

Get-ADComputer -Filter {OperatingSystem -Like "*windows*"} -Property * | Format-Table Name | foreach {Echo "psexec \\$ cleanmgr /sagerun:1"} 

ответ

0

Я получил это работает именно так, как я хотел, и с конкретным подразделением.

ForEach ($COMPUTER in (Get-ADComputer -Filter * | Where-Object {$_.DistinguishedName -Like "*OU=Employee's Computers,DC=company,DC=com"} | Select-Object -ExpandProperty Name)) { .\psexec \\$COMPUTER cleanmgr /sagerun:1 } 
+0

Вы можете ускорить запрос, используя: 'Get-ADComputer -searchRoot 'OU = Employee's Computers, DC = компания , DC = com "' PowerShell затем не загрузит все компьютеры из AD, только те, которые вам нужны. – MicroScripter

+0

Это не работает. Он жалуется на '-searchRoot'. – Eroji

0

что-то вроде этого

$computers = get-Content c:\computers.txt 
foreach ($computer in $computers){ 
if(!(Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) 
{write-host "cannot reach $computer" -f red} 

else {& \\$computer\C$\Windows\System32\cleanmgr.exe /sagerun:1}} 
+0

не пытался с вы можете проверить '$ компьютеры = Get-ADComputer -Filter {OperatingSystem -Как "* окна *"} -Property * | Format-Table Name' – DisplayName

+0

Не запустите ли это пульт 'cleanmgr.exe' на вашем локальном компьютере? – MicroScripter

+0

он также будет работать на удаленных компьютерах и не нужен pstools +, вы можете получить информацию о том, на каком компьютере он был запущен. – DisplayName

Смежные вопросы