2017-05-05 6 views
1

Invoke-Commandに変数を取得する際に問題があるようです。私は何でも変数を得ることはできません。私が使用したいときは:Invoke-Commandのスクリプトブロック内の変数の問題

Invoke-Command -ComputerName $servername { new-item -Path "$RootPathDestination" -Name $version -Itemtype directory } 

私はエラーを取得:

Cannot bind argument to parameter 'Path' because it is an empty string. 

をそして私は、このスクリプトでそれらを宣言した:

$version = 36 
$RootPathDestination = "c:\scripts\" 

誰がどんな考えを持っていますか?私はあなたが接頭辞を使用してを使用する必要が

$svr = "SQLSERVER" 
    $db = "0000 - INFRA" 
    $version = 36 
    $RootPathDestination = "c:\scripts\" 


    # connection 
    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection 
    $sqlConnection.ConnectionString = "Server=$svr;Database=$db;Integrated Security=True" 

     $sqlConnection.Open() 
     $cmd = $sqlConnection.CreateCommand() 
     $cmd.CommandText ="SELECT * from infrastructure" 
     $Serverinfo = $cmd.ExecuteReader() 
     try 
     { 
      while ($Serverinfo.Read()) 
      { 
       $servername = $Serverinfo.GetValue(1) 
       Invoke-Command -ComputerName $servername { new-item -Path "$RootPathDestination" -Name $version -Itemtype directory } 
       #Invoke-Command -ComputerName $servername { Copy-Item c:\scripts\* c:\test } 
       #Invoke-Command -ComputerName $servername {Import-Module WebAdministration ; New-WebApplication -force -Site "Default Web Site" -Name 3.78 -PhysicalPath "c:\inetpub\"$version } 
      } 
     } 
     catch 
     { 
      echo "Hmm strange" 
     } 
     finally 
     { 
     echo "All good!" 

     echo $Version 



      $sqlConnection.Close() 
     } 

答えて