목표 : 컴퓨터 이름과 현재 로그온 한 사용자의 변수를 사용하여 네트워크의 여러 컴퓨터에서 네트워크 공유로로 복사합니다.PowerShell RoboCopy 경로 문제
내가 가지고있는 것 : 컴퓨터 이름 목록이있는 txt 파일.
호 : 도메인 접두사를 제거하기 위해 username 변수에서 사용하는 .split ("\") [1]에서 foreach를 사용할 수 없으므로 robocopy 경로의 출력을 사용할 수 있습니다.
robocopy "\\$computername\c$\documents and settings\$username\backup" "\\networkshare\backup\$username\backup"
나에게 오류 을 제공
뭔가처럼 당신은 null 값 식에 대해 메서드를 호출 할 수 없습니다. C : \ Scripts \ Test \ backup.ps1 : 13 문자 : 2
내가 지금까지 가지고있는 것입니다. 누군가 제발 도와 줄 수 있니?
function Get-LoggedIn {
[CmdletBinding()]
param (
[Parameter(Mandatory=$True)]
[string[]]$computername
)
foreach ($pc in $computername){
$logged_in = (gwmi win32_computersystem -COMPUTER $pc).username
$name = $logged_in.split("\")[1]
"{1}" -f $pc,$name
}
}
$computers = Get-Content "C:\Scripts\testcomputers.txt"
foreach ($computer in $computers) {
$users = Get-LoggedIn $computer
}
$SourceFolder = "\\$computer\c$\users\$users\desktop"
$DestinationFolder = "\\networkshare\backups\$users\backup\desktop"
$Logfile = "\\networkshare\backups\$users\backup\backuplog.txt"
Robocopy $SourceFolder $DestinationFolder /E /R:1 /W:1 /LOG:$Logfile
루프의 모든 컴퓨터에서 제대로 작동합니까? '(gwmi win32_computersystem -COMPUTER $ pc) .username' –