2016-07-14 4 views
0

Я уже много лет скрываю ответы на код с этого сайта, но это первый раз, когда я задал вопрос. На самом деле мне не платят за код, вместо этого я использую скрипты, чтобы упростить обычные задачи.Powershell перебирает список серверов с учетными данными

Я использую Powershell скрипт со следующим кодом (что я довольно много почерпнуть из этого сайта), чтобы собрать использование дискового пространства на серверах клиента:

$dataColl = @()#Makes an array, or a collection to hold all the object of the same fields 

foreach ($serverName in (get-content c:\reporting\Disk_useage\My_servers.txt)) 

{ 

    $path = “\\$serverName\d$\folder1\TargetSubdir“ 

    $dirSize = Get-ChildItem $path -recurse -force | select Length |Measure-Object -Sum length 

    $dirSize.sum = $dirSize.sum/1MB 

    $finalResult = “{0:N2} MB” -f $dirsize.sum 

    $dataObject = New-Object PSObject 

    Add-Member -inputObject $dataObject -memberType NoteProperty -name “ServerName” -value $serverName 

    Add-Member -inputObject $dataObject -memberType NoteProperty -name “Dir_Size” -value $finalResult 

    $dataColl += $dataObject 

    $dataObject 

} 

$dataColl | Export-Csv -noTypeInformation -path c:\reporting\Disk_useage\Svr_disk.csv 

Это работает отлично, но теперь мы имеют 2-й домен с клиентскими серверами, поэтому мне нужно добавить учетные данные для серверов во 2-м домене. Я исследовал способы передачи учетных данных вместе, и получил этот бит кода (PW хранился уже в файле .TXT):

$username = "MyDomain\MyAccount" 
$password = cat C:\reporting\securestring.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential ` 
    -argumentlist $username, $password 

Но я должен добавить эти параметры где-то на самом деле использовать которые были установлены:

-Authentication default -Credential $Cred 

Я пробовал его в нескольких разных местах без успеха. FYI, список в My_servers.txt имеет кучу серверов. Мне НЕ нужны учетные данные (поскольку они находятся в текущем домене) и множество серверов, где мне нужны учетные данные (потому что они находятся в другом домене) , Но учетные данные, которые я использую для сценария, относятся к учетной записи службы, которая существует в обоих доменах с тем же ID/PW. Любая помощь в ее сортировке была бы весьма признательна.

+0

у вас WinRM настроен, вы можете использовать команду вызова-{d: \ folder1 \ targetsubdir} -credential $ yourcredentials и т.д., чтобы справиться с этим по-разному? Если нет, вы можете попробовать сопоставить диски? –

+0

Я не вижу, как бы это включить. Как я уже сказал, я не кодер по профессии, поэтому мне нужен более конкретный совет. –

ответ

0

предложение Адиль в коде будет:

$dataColl = @()#Makes an array, or a collection to hold all the object of the same fields 
$username = "MyDomain\MyAccount" 
$password = Get-Content C:\reporting\securestring.txt | convertto-securestring 
$cred = New-Object -typename System.Management.Automation.PSCredential ` 
    -argumentlist $username, $password 
foreach ($serverName in (get-content c:\reporting\Disk_useage\My_servers.txt)) 

{ 
    $dirSize = Invoke-Command -Credential $cred -ComputerName $serverName -ScriptBlock { 
     Get-ChildItem “d:\folder1\TargetSubdir“ -recurse -force | select Length | Measure-Object -Sum length 
    } 
    $dirSize.sum = $dirSize.sum/1MB 

    $finalResult = “{0:N2} MB” -f $dirsize.sum 

    $dataObject = New-Object PSObject 

    Add-Member -inputObject $dataObject -memberType NoteProperty -name “ServerName” -value $serverName 

    Add-Member -inputObject $dataObject -memberType NoteProperty -name “Dir_Size” -value $finalResult 

    $dataColl += $dataObject 

    $dataObject 

} 

$dataColl | Export-Csv -noTypeInformation -path c:\reporting\Disk_useage\Svr_disk.csv 
Смежные вопросы