问题描述:

#VARIABLES

$Source = Read-host "Please provide DIR location you wish to copy its contents from.

ie. (UNC, Absolute paths, etc)"

$Serverlist = Read-Host "Please provide the location of the server list. (UNC, Absolute

paths, etc)"

$Servers = Get-Content -Path $Serverlist

#$Destination1 = \\$Server\c$\inetpub\wwwroot\'

#$Destination2 = \\$Server\c$\wmpub\wmroot\'

#EXECUTION

$Servers | foreach-object {

Copy-Item -Path $Source*.wsx -Destination $Server\c$\inetpub\wwwroot\ -

force

Copy-Item -Path $Source*.nsc -Destination $Server\c$\wmpub\wmroot\ -force

}

#EVENTVWR LOGGING

$EventLog = New-Object System.Diagnostics.EventLog('Application')

$EventLog.MachineName = "."

$EventLog.Source = "Streaming Media Engineering"

$EventLog.WriteEntry('Copy Successful',"Information", 200)

#VIEWING OVERLOADS

($myevent.WriteEntry).OverloadDefinitions

Add-Type -AssemblyName System.Speech

$synthesizer = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer

$synthesizer.Speak('Files have been moved over successfully...')

I can't seem to get the script to Read the $Server variable out in the $Destination1 and $Destination2 paths when trying to do a Copy-Item loop. Please help have spent a couple days on this...

网友答案:

variable $Server is not set inside pipeline. You have to assign it to the current pipeline object from $Servers:

# For PS2 and above:
$Servers | ForEach-Object {
$Server = $_
...

# If you are sure that you will always use PS3 or above
$Servers | ForEach-Object {
$Server = $PSItem
...

Hope that this helps.

P.S. I've notice that this question was posted 2 years ago, I'm a grave digger now :P

相关阅读:
Top