70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

اسکریپت انتقال کامپیوترهای یک ou از اکتیو به یک گروه در wsus

سلام به همه دوستان

من میخوام با استفاده از پاورشل تمامی کامپیوترهای یک ou رو از اکتیو بخونم و توی سرور wsus توی یه گروه اضافه کنم


پرسیده شده در 1401/05/11 توسط

7 پاسخ

2

یعنی اگه عنوان اجباری نبود ، خالی ردش می کردن !


پاسخ در 1401/05/11 توسط
4

سلام

اگر منظور شما را اشتباه برداشت کردم، اصلاح کنید. یک تعداد Computer Object داخل یک OU دارید که میخواهید آنها را بدون اعمال پالیسی Client Side targeting، با دستور پاورشل عضو گروهی کنید که از قبل داخل WSUS ایجاد کردید.

برای شروع در نظر داشته باشید که Computer object هایی که میخواهید از این طریق عضو گروه مورد نظر کنید، می بایست داخل کنسول WSUS در بخش All Computers یا Unassigned Computers وجود داشته باشند. (یعنی پالیسی مرتبط با آپدیت سیستم عامل به کلاینت یا سرور های مورد نظر شما اعمال شده باشد تا داخل WSUS قابل رویت باشند)

مرحله دوم، می بایست از Computer های موجود در آن OU یک خروجی بگیرید و در یک فایل با پسوند (txt) قرار دهید. (نام کامپیوتر ها زیر هم باشد) به طور مثال:

mim-be-srv
mim-db-srv
sfb-app-srv

فایل Notepad را داخل سرور WSUS در یک مسیر مشخص قرار دهید.

Powershell را به صورت Run as Administrator اجرا کنید.

  • اسکریپت زیر را با توجه به اطلاعات خودتون داخل پاورشل کپی و سپس Enter کنید تا دستورات اجرا شوند. یا اسکریپ مورد نظر را به صورت یک فایل (ps1.) ذخیره کنید و داخل پاور شل اجرا کنید.
  • قسمت هایی که Bold شده اند بخش هایی هستش که باید آنها را با توجه به اطلاعات خودتون تغییر دهید.
  • یک پوشه با نام logs هم در یک مسیر مشخص ایجاد کنید.
$wsusgroup="Test2"
$wsusparentgroup="All Computers"
$serverlist=Get-Content "C:\Script\servers.txt"
$date=get-date
$date = [string]$date.day + $date.month + $date.year + $date.hour + $date.minute
$succeslog="C:\logs\" +$date +"_success.log"
$errorlog="C:\logs\" + $date +"_errors.log"
$WindowsUpdateServer= "msad-srv"
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
if (!$wsus) {
        $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($WindowsUpdateServer,$False)
}
$UpdateGroups=$Wsus.GetComputerTargetGroups()
$updategroup=$UpdateGroups | Where-Object{$_.Name -eq $wsusgroup} | Where-Object{$_.getparenttargetgroup().name -eq $wsusparentgroup}
$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope
$computerScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::All
$computers = $wsus.GetComputerTargets($computerScope)
$WsusServers=@()
$WsusServersShortNames=@()
$computers | foreach-object {
 
 $WsusServer=$_.FullDomainName
 $WsusServerShortName=$WsusServer.split(‘.’)[0]
 $WsusServers += $WsusServer
 $WsusServersShortNames += $WsusServerShortName
}

ForEach ($server in $serverlist)  {
 
 $WsusComputer=($WsusServersShortNames -eq $server)
 If ($WsusComputer) {
  $WsusComputer=($WsusServers -like "$server*" )
  If ($wsuscomputer.count -eq 1) {
   Write-Host "$WsusComputer will be added to $($updategroup.name) group"
   $computer=$wsus.GetComputerTargetByName($WsusComputer)
   $updategroup.AddComputerTarget($computer)
   out-file -append -inputobject "$Server added to $($updategroup.name) group" -filepath $succeslog
          }
 Else
     {
     write-host "count $($wsuscomputer.count)"
     Out-File -append -inputobject "$Server has ambiguous name – check server in WSUS and add to group manually" -filepath $errorlog
     }
  }
Else {
 Write-Host "$Server not found in WSUS"
 out-file -append -inputobject "$Server not found in WSUS" -filepath $errorlog
}
    }

توضیحات:

به جای test2 نام گروه مورد نظر خود را وارد کنید.(نام گروه را دقیقا مثل نام گروه ایجاد شده در WSUS، وارد کنید.)

$wsusgroup="Test2"

مسیری که لیست سرور ها را در آنجا می باشد را به صورت کامل تایپ کنید.

$serverlist=Get-Content "C:\Script\servers.txt"

پوشه ای برای لاگ ایجاد کنید و مسیر آنها را در این بخش قرار دهید.

$succeslog="C:\logs\" 
$errorlog="C:\logs\"

در این قسمت، نام سرور WSUS خود را وارد کنید

$WindowsUpdateServer= "msad-srv"

اگر همه دستورات را به درستی تغییر دهید، پس از اجرای صحیح آن داخل پاورشل، به کنسول WSUS بروید و با Refresh کردن پوشه مورد نظر، Computer Object ها را داخل آن مشاهده خواهید کرد.

پاسخ در 1401/05/11 توسط
1

ممنون از نظر هر دو عزیز من بابت موضوعی که پیش اومده معذرت میخوام و 

پاسخ در 1401/05/11 توسط
1

یک نکته ای اینجا وجود داره که در نظر نگرفتید !! من برداشت اشتباهی از سوالتون داشتم ، ببینید اساسا WSUS کاری با OU های شما نداره ! تا جاییکه من میدونم باید خودش کامپیوترهای Join شده به WSUS با پالیسی رو تشخیص بده ، به همین دلیل دستی اینکار انجام نمیشه ، اسکریپت هم نیست چون در واقع Create نمیشن تو WSUS ... معرفی میشن ... یعنی خودشون میان و میگن مارو اضافه کن ازت آپدیت بگیریم ، شما مسئله رو بیشتر باز کن تا بتونیم راهنماییتون کنیم ، فکر می کنم مشکل شما این باشه که کامپیوترهای شما توی WSUS دیده نمیشن

پاسخ در 1401/05/11 توسط
-1

ممنون از راهنماییتون - برداشت من اشتباه بوده از موضوع. 

پاسخ در 1401/05/12 توسط
0

بنده پاسخ و اسکریپت مورد نظرتون رو دارم اما چون برای نوشتن عنوان درست برای سوالتون زمان نذاشتین نمیتونم کمکتون کنم ، لطفا برای عنوان سوالتون زمان بزارید تا دیگران براتون زمان بزارن

پاسخ در 1401/05/11 توسط

پاسخ شما