2016-07-14 40 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 

這一直工作正常,但現在我們有客戶端服務器的第二個域,所以我需要爲第二個域中的服務器添加憑據。我一直在研究如何傳遞下去憑證,並得到了這段代碼(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 

我已經在幾個不同的地方嘗試過它沒有成功。僅供參考,My_servers.txt中的列表中有一堆服務器,我不需要證書(因爲它們位於當前域),還有一些我需要證書的服務器(因爲它們在另一個域中) 。但是我爲腳本使用的憑據是兩個域中存在相同ID/PW的服務帳戶。任何幫助整理這將不勝感激。

+0

你有WinRM的配置,您可以使用調用命令{d:\文件夾1 \ 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