2014-11-21 85 views
0

我將在本主題中回答我自己的問題,但請隨時給我建議對我可以使用此腳本做得更好的批評。我最近對質量跨越很多電腦上的域安裝VNC,需要對他們的PC的一些信息,例如:爲網絡管理員獲取重要的計算機信息

  1. 主機名
  2. 用戶名
  3. MAC地址
  4. IPv4地址
  5. 域名

一旦所有這些信息收集它被編譯成一個文本文件,並上傳到FTP服務器,以文件被保存的conf使用相同的名稱,我將每個文件設置爲用戶的名稱。

這是有史以來第一次使用powershell的腳本和第一次體驗,所以請告訴我是否有任何可以改進的地方。

+1

如果你希望人們重溫你的代碼,你應該問過來的http://codereview.stackexchange.com/你也可以張貼問題,並通過點擊「接自己的同時回答問題「框中,如果你要發佈自己的問題,你應該使用它。 – 2014-11-21 16:05:55

+0

好的,我也會在那裏上傳它,有沒有一個地方可以上傳,以幫助其他可能需要這樣做的用戶? – Phasmatis 2014-11-21 16:08:27

+0

@Phasmatis如果你希望你的問題去Code Review;你應該把這些零件組合起來並在那裏問它;按照現狀,如果我將其遷移,因爲它不符合格式,它將被拒絕。 – 2014-11-21 16:09:23

回答

0
function Get-MACAddress { 
    ipconfig /all | findstr "Physical" | Where-Object {$_.length -lt 58} 
} 
function Get-IPAddress { 
    ipconfig | findstr "IPv4 Address" 
} 
function Get-HostName { 
    get-content env:computername 
} 
function Get-UserName{ 
    get-content env:UserName 
} 
function Get-DomainName{ 
get-content env:USERDOMAIN 
} 
function CreateCSVdocument { 
    Get-MACAddress | New-Item C:\Users\$($env:username)\Documents\$($env:username).txt -type file  -force 
    Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt " " 

Get-IPAddress | Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt 
Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt " " 

Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt "Hostname:" 
Get-Hostname | Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt 
Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt " " 

Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt "User:" 
Get-UserName | Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt 
Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt " " 

Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt "Domain:" 
Get-DomainName | Add-Content C:\Users\$($env:username)\Documents\$($env:username).txt 
} 
function FTPUpload { 
$Dir="C:\Users\$($env:username)\Documents\$($env:username).txt"  

#ftp server 
$ftp = "ftpserver" 
$user = "username" 
$pass = "password" 

$webclient = New-Object System.Net.WebClient 

$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 

#list every sql server trace file 
foreach($item in (dir $Dir "$($env:username).txt")){ 
    "Uploading $item..." 
    $uri = New-Object System.Uri($ftp+$item.Name) 
    $webclient.UploadFile($uri, $item.FullName) 
} 

} 
Get-DomainName 
Get-IPAddress 
Get-MACAddress 
Get-HostName 
Get-UserName 
CreateCSVdocument 
FTPUpload 
+0

我建議你返工至少得到Mac/IP地址,因爲ipconfig的輸出是不同的取決於區域設置,更好的方法是使用wmi(win32_networkadapterconfiguration) – Paul 2014-11-21 16:29:32