Copy-VMFile
Hey,
ich sitze jetzt an einem *.ps1 Script und würde gern folgendes realisieren:
eine Datei von meinem Host auf ein Gastbetriebssystem bringen.
Zum Einsatz kommt ein Windows Server 2012 R2 und Hyper-V.
Hier mein Code:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Host "Running elevated..."
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
[system.reflection.assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$Sourcepath = [Microsoft.VisualBasic.interaction]::inputbox('Bitte Pfad der Sicherung angeben','*.bak an den SQL Server senden', '')
Copy-VMFile -VMName "!Installation_FS_SQL" -SourcePath $Sourcepath -DestinationPath "E:\copytest\" -CreateFullPath -FileSource Host
Bekomme folgenden Fehler:
Copy-VMFile : "!Installation_FS_SQL" konnte die Datei nicht kopieren (ID des virtuellen Computers: 589F7856-0EAB-48F1-B147-504404125A70).
"!Installation_FS_SQL" konnte keine Dateien in das Gastbetriebssystem kopieren: Mindestens ein Argument ist ungültig. (0x80070057). (ID des virtuellen Computers:
589F7856-0EAB-48F1-B147-504404125A70)
"!Installation_FS_SQL" konnte die Quelldatei "D:\TEST-FS\test\web.config" nicht in das Ziel "E:\copytest\" des Gastbetriebssystems kopieren: Mindestens ein Argument ist ungültig.
(0x80070057). (ID des virtuellen Computers: 589F7856-0EAB-48F1-B147-504404125A70)
An den Vorgang wurde ein ungültiger Parameter übergeben.
In D:\TEST-FS\Scripts\test.ps1:15 Zeichen:1
Copy-VMFile -VMName "!Installation_FS_SQL" -SourcePath $VMName -DestinationPath ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (Microsoft.Hyper...FileToGuestTask:VMCopyFileToGuestTask) [Copy-VMFile], VirtualizationOperationFailedException
FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.CopyVMFileCommand
Könnte mir da jemand weiterhelfen?
Es scheint als mag er die Variable nicht nehmen..
Möchte aber gern die Angabe des Quellpfades so variabel wie möglich halten.
Gruß
t
ich sitze jetzt an einem *.ps1 Script und würde gern folgendes realisieren:
eine Datei von meinem Host auf ein Gastbetriebssystem bringen.
Zum Einsatz kommt ein Windows Server 2012 R2 und Hyper-V.
Hier mein Code:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Host "Running elevated..."
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
[system.reflection.assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$Sourcepath = [Microsoft.VisualBasic.interaction]::inputbox('Bitte Pfad der Sicherung angeben','*.bak an den SQL Server senden', '')
Copy-VMFile -VMName "!Installation_FS_SQL" -SourcePath $Sourcepath -DestinationPath "E:\copytest\" -CreateFullPath -FileSource Host
Bekomme folgenden Fehler:
Copy-VMFile : "!Installation_FS_SQL" konnte die Datei nicht kopieren (ID des virtuellen Computers: 589F7856-0EAB-48F1-B147-504404125A70).
"!Installation_FS_SQL" konnte keine Dateien in das Gastbetriebssystem kopieren: Mindestens ein Argument ist ungültig. (0x80070057). (ID des virtuellen Computers:
589F7856-0EAB-48F1-B147-504404125A70)
"!Installation_FS_SQL" konnte die Quelldatei "D:\TEST-FS\test\web.config" nicht in das Ziel "E:\copytest\" des Gastbetriebssystems kopieren: Mindestens ein Argument ist ungültig.
(0x80070057). (ID des virtuellen Computers: 589F7856-0EAB-48F1-B147-504404125A70)
An den Vorgang wurde ein ungültiger Parameter übergeben.
In D:\TEST-FS\Scripts\test.ps1:15 Zeichen:1
Copy-VMFile -VMName "!Installation_FS_SQL" -SourcePath $VMName -DestinationPath ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (Microsoft.Hyper...FileToGuestTask:VMCopyFileToGuestTask) [Copy-VMFile], VirtualizationOperationFailedException
FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.CopyVMFileCommand
Könnte mir da jemand weiterhelfen?
Es scheint als mag er die Variable nicht nehmen..
Möchte aber gern die Angabe des Quellpfades so variabel wie möglich halten.
Gruß
t
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 310903
Url: https://administrator.de/contentid/310903
Ausgedruckt am: 24.11.2024 um 10:11 Uhr
6 Kommentare
Neuester Kommentar
Hi.
Take a note: -SourcePath has no Wildcard support!
Regards
D:\TEST-FS\
Is this as mapped drive ? If yes you have to take into account that if you run the script with different credentials than the current user, shares won't be mapped inside this session. -DestinationPath "E:\copytest\"
Give the full destination path including the filename and try again.Take a note: -SourcePath has no Wildcard support!
Regards
Getting only the file name part from a path is really easy with split-path
[system.reflection.assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$Sourcepath = [Microsoft.VisualBasic.interaction]::inputbox('Bitte Pfad der Sicherung angeben','*.bak an den SQL Server senden', '')
Copy-VMFile -VMName "!Installation_FS_SQL" -SourcePath $Sourcepath -DestinationPath "E:\copytest\$(Split-Path $Sourcepath -Leaf)" -CreateFullPath -FileSource Host
Like i said $sourcepath has to be a valid accessible path on the Hyper-V Host see the documentation!
And check it with Test-Path before using it!
And check it with Test-Path before using it!