目的: マシン名と現在ログオンしているユーザーの両方の変数を使用して、ネットワーク上の複数のマシンからネットワーク共有にロボ コピーします。
私が持っているもの:コンピューター名のリストを含むtxtファイル。
問題: foreach を .split("\")[1] で動作させることができません。ユーザー名変数で使用してドメイン プレフィックスを削除し、そこからの出力を 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