Im Powershellには非常に新しく、「古い」フォルダをチェックして見つからない場合は作成するスクリプトのために次のコードをまとめました。次に、圧縮されたウェブログを現在の場所から '古い'フォルダに移動します。私はこれが夜間に実行するようにセットアップすることができ、新しいサーバーまたは削除されたサーバーで更新する必要がないように、SQLクエリからサーバー名とWebサイト名を取得するように書かれています。私はこれまでのところ書かれているが、私が新しいので、最後の構文を理解することはできない。私がやりたい何2つのSQLクエリをパラメータとして渡すためのデータセットとして渡す
clear
$SqlServer = "SERVER"
$SqlCatalog = "DATABASE"
$SqlQuery = "select hsa.servername from SERVER.dbo.serversapp hsa
inner join SERVER.dbo.apphosts hah on hsa.vchservername = hah.vchservername
where hsa.tirecordstatus = 1
order by hsa.vchservername desc"
$SqlQuery1 = "select hah.vchhost from SERVER.dbo.serversapp hsa
inner join SERVER.dbo.apphosts hah on hsa.vchservername = hah.vchservername
where hsa.tirecordstatus = 1
order by hsa.vchservername desc"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SqlServer; Database = $SqlCatalog; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
はそれぞれ$のSQLQueryはので、私は次のコードのパラメータとしてそれぞれを渡すことができ、それ自身のデータセットテーブル内の各1を実行して、保存しています。私が理解しなければならないのは:
1)私は両方のSQLクエリを実行し、それぞれを自分自身のデータセットまたはテーブルにするために、どのように記述すればよいのですか? $ Servernameと$ HostedGroup?
2)$ Servernameパラメータから各サーバで以下のコードを再帰的に繰り返すように設定するにはどうすればよいですか?
$Servername = Dataset1
$Hostedgroup = Dataset2
$OldFolder = "\\$Servername\C$\Ren\Weblogs\$Hostedgroup\old"
$FolderExists = Test-Path $OldFolder
if($FolderExists -eq $False)
{
new-item \\$Servername\C$\Ren\Weblogs\$Hostedgroup\old -type directory
}
then
{
if(Test-Path \\$Servername\C$\Ren\Weblogs\old\W3SVC2)
{
get-childitem -path '\\$Servername\C$\Ren\WebLogs\$Hostedgroup\W3SVC2' -recurse -include *.zip | move-item -destination '\\$Servername\C$\Ren\WebLogs\$Hostedgroup\old'
でした。この例の最後の行では、 'Get-HostedServerApp'から返されたレコードは' foreach' CmdLet(完全名は 'ForEach-Object'です)に渡されます。 'Foreach'は、パイプラインを渡されたオブジェクトごとにスクリプトブロックを実行します。詳細は 'help ForEach-Object -Online'を参照してください。 – Rynant
'\\ $ Servername \ C' $ \ Renaissance \ Weblogs \ $ Hostedgroup \ old'は単にコードのプレースホルダとして追加されます。この関数の上のコメントでは、次のように書いています: '#あなたのロジックをこの関数に入れよう ' – Rynant
あなたの関数では、これらのパラメータは必要ありません:$ Servername = Dataset1 <------------- - $ Hostedgroup = Dataset2 <-------------- – bbinnebose