【问题标题】:Getting essential computer info for network admins为网络管理员获取重要的计算机信息
【发布时间】:2014-11-21 16:03:09
【问题描述】:

我将在这个线程中回答我自己的问题,但请随时对我提出批评,批评我可以用这个脚本做得更好。我最近不得不在域中的多台计算机上大规模安装 VNC,并且需要一些关于他们的 PC 的信息,例如:

  1. 主机名
  2. 用户名
  3. MAC 地址
  4. IPv4 地址
  5. 域名

收集完所有这些信息后,会将其编译为文本文件并上传到 FTP 服务器,为了避免文件与同名文件发生冲突,我将每个文件都设置为用户名。

这是我第一次使用 powershell 的脚本和第一次体验,所以请告诉我是否有任何可以改进的地方。

【问题讨论】:

  • 如果您希望人们查看您的代码,您应该在codereview.stackexchange.com 上提出问题,您也可以通过单击“回答您自己的问题”框同时发布问题和答案。问一个问题,如果你要发布到你自己的问题,你应该使用它。
  • 好的,我也会上传到那里,有什么地方可以上传以帮助其他可能也需要这样做的用户吗?
  • @Phasmatis 如果您想将问题提交给代码审查;您应该将这些部分组合起来并在那里询问;就目前而言,如果我迁移它会被拒绝,因为你不符合他们的格式。
  • 如果你想找个地方上传分享,可以发到gallery.technet.microsoft.com/scriptcenter

标签: powershell ftp administration


【解决方案1】:
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

【讨论】:

  • 我建议您至少重新获得 Mac/IP 地址,因为 ipconfig 的输出因区域设置而异,更好的方法是使用 wmi (win32_networkadapterconfiguration)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多