Im Powershell에 매우 새롭고 '이전'폴더를 확인하고 찾을 수없는 경우 만들 스크립트에 대해 다음 코드를 함께 사용했습니다. 그런 다음 압축 된 웹 로그를 현재 위치에서 '이전'폴더로 이동합니다. 야간에 실행되도록 설정할 수 있고 새 서버 나 삭제 된 서버로 업데이트 할 필요가 없도록 SQL 쿼리에서 서버 이름과 웹 사이트 이름을 가져 오도록 작성했습니다. 필자는 지금까지 작성한 내용을 가지고 있지만 새로운 내용이므로 마지막 구문을 이해할 수 없습니다. 내가하고 싶은 무엇두 개의 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) 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'는 파이프 라인을 통해 전달되는 각 객체에 대한 스크립트 블록을 실행합니다. 더 자세한 정보는'ForEach-Object -Online'을 참고하십시오. – Rynant
'\\ $ Servername \ C' $ \ Renaissance \ Weblogs \ $ Hostedgroup \ old'는 코드의 자리 표시 자로 추가됩니다. 함수 위의 주석에서 나는 다음과 같이 썼다 : # #이 함수에 논리를 둔다. – Rynant
함수 때문에 더 이상 매개 변수가 필요 없다. $ Servername = Dataset1 <------------- - $ Hostedgroup = Dataset2 <-------------- – bbinnebose