คำถามติดแท็ก powershell

เชลล์แบบโต้ตอบสคริปต์การเขียนโปรแกรมและภาษาและสภาพแวดล้อมโดยรอบจาก Microsoft ที่ใช้กันทั่วไปโดยผู้ดูแลระบบที่จัดการซอฟต์แวร์ Microsoft (รวมถึง Windows, Exchange, SharePoint และบริการคลาวด์ Azure และ Office 365) PowerShell จะถูกรวมไว้โดยค่าเริ่มต้นกับ Windows และรับช่วงต่อจากภาษาก่อนหน้าเช่น VB Script

1
การรีสตาร์ทบริการตามกำหนดเวลาด้วย Powerhshell เป็นบัญชีบริการที่ไม่ใช่ผู้ดูแลระบบ
ก่อนที่ฉันจะโดนยิงฉันรู้วิธีกำหนดเวลางานเริ่มบริการใหม่ด้วย PowerShell หรือให้สิทธิ์ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเพื่อเริ่มบริการใหม่ นั่นไม่ใช่ปัญหา อย่างไรก็ตามปัญหาคือการรวมกันของทั้งสามงานรวมกัน ฉันมีบริการ windows ที่ต้องการประมวลผลไฟล์ในโฟลเดอร์เครือข่าย ดังนั้นจึงเข้าสู่ระบบด้วย "บัญชีบริการ" ที่จริงแล้วเป็นเพียงบัญชีโดเมนปกติ บัญชีโดเมนนี้ไม่ใช่ผู้ดูแล แต่มีสิทธิ์การเข้าถึงโฟลเดอร์ดังกล่าว บริการทำงานได้ดีและทำงานได้ อย่างไรก็ตามบางครั้งมีข้อผิดพลาดในไฟล์ใดไฟล์หนึ่งที่ป้องกันไฟล์อื่นไม่ให้ถูกประมวลผล โดยปกติจะใช้เวลาสักครู่ก่อนที่คนจะสังเกตเห็นและมีงานค้างบางส่วน ดังนั้นฉันจึงสร้างสคริปต์การตรวจสอบใน PowerShell ที่สำรวจโฟลเดอร์เครือข่ายสำหรับไฟล์ที่ผิดพลาดเหล่านี้ หากพบไฟล์เหล่านั้นจะถูกย้ายไปยังโฟลเดอร์ชั่วคราวเพื่อตรวจสอบและจำเป็นต้องเริ่มบริการใหม่ ฉันให้สิทธิ์บัญชีบริการผ่านนโยบายกลุ่มเพื่อเริ่มและหยุดบริการ เมื่อฉันเข้าสู่เซิร์ฟเวอร์ด้วยบัญชีบริการฉันสามารถเริ่มบริการด้วยตนเองโดยใช้ Services MMC ฉันยังสามารถเรียกใช้สคริปต์ powershell และทำสิ่งที่ควรจะทำ: สำรวจโฟลเดอร์ย้ายไฟล์และเริ่มบริการ ที่ดี! ในระยะต่อไปฉันสร้างงานที่กำหนดเวลาไว้ซึ่งทำงานทุกๆ 10 นาที งานใช้บัญชีบริการเดียวกับบริการเพื่อเรียกใช้งานสคริปต์ PowerShell มีการทำเครื่องหมายที่ช่อง "ดำเนินการด้วยสิทธิ์ระดับสูง" อย่างที่ฉันบอกว่าสคริปต์ powershell ต้องการการเข้าถึงไดรฟ์เครือข่ายดังนั้นฉันจึงไม่สามารถเรียกใช้ในฐานะผู้ดูแลระบบเซิร์ฟเวอร์ในพื้นที่และฉันไม่ต้องการใช้ข้อมูลประจำตัวของผู้ดูแลโดเมนสำหรับงานที่มีลักษณะเช่นนี้ (ฉันพยายามใช้หลักการของสิทธิ์น้อยที่สุดเท่าที่จะทำได้) ฉันให้สิทธิ์บริการบัญชี "เข้าสู่ระบบเป็นชุดงาน" บนเซิร์ฟเวอร์ภายในโดยใช้ Local Security Policy MMC ตอนนี้สำหรับส่วนที่ฉันไม่สามารถเข้าใจได้: ในเวลาที่กำหนดภารกิจที่กำหนดเวลาไว้เสร็จสมบูรณ์แล้วและสคริปต์ PowerShell …

1
ฉันสามารถเปลี่ยนคำอธิบายการอัพเดทใน WSUS ได้หรือไม่?
ใน Microsoft Patch แต่ละวันฉันมีการอัปเดตใหม่จำนวนมากที่ฉันต้องการอนุมัติให้กับลูกค้าของฉัน แต่แทนที่จะเป็น 'อนุมัติการอัปเดตทั้งหมดและดำเนินการต่อ' ฉันรวบรวมข้อมูลเกี่ยวกับการอัปเดตแต่ละครั้งที่บทความฐานความรู้เพื่อตัดสินใจว่านี่เป็นการอัปเดตที่สำคัญสำหรับเราหรือไม่ นี่เป็นงานที่ค่อนข้างน่าเบื่อเพราะฉันต้องพิมพ์หมายเลข KB ตามลงในเบราว์เซอร์ของลูกค้าและรอให้หน้าเว็บโหลด ฉันสงสัยว่าทำไม Microsoft ไม่ใช้กล่องคำอธิบายการอัปเดตที่แผงควบคุม WSUS เพื่อแสดงข้อมูลที่เป็นประโยชน์และมีรายละเอียดที่แท้จริง การอัปเดตทั้งหมดของฉันจะอ่านแทน: ติดตั้งโปรแกรมปรับปรุงนี้เพื่อแก้ไขปัญหาใน Windows สำหรับรายการปัญหาทั้งหมดที่รวมอยู่ในการปรับปรุงนี้ให้ดูบทความฐานความรู้ของ Microsoft ที่เกี่ยวข้องสำหรับข้อมูลเพิ่มเติม หลังจากที่คุณติดตั้งรายการนี้คุณอาจต้องรีสตาร์ทคอมพิวเตอร์ ฉันเริ่มคิดถึง Powershell script เล็กน้อยซึ่งเพิ่มข้อมูลที่จำเป็นสำหรับฉัน แต่ฉันล้มเหลวในขั้นตอนแรกซึ่งกำลังเปลี่ยนคำอธิบายการอัปเดตด้วยตนเอง: PS C: \ Users \ Administrator> $ wsus = Get-WsusServer PS C: \ Users \ Administrator> $ update = $ wsus.SearchUpdates ('KB3013791') PS …

1
สคริปต์การตรวจจับ SCCM Powershell ทำงานในบริบทใด
ในที่สุดฉันก็ประสบความสำเร็จในการใช้สคริปต์ตรวจจับ PowerShell กับลูกค้าที่มีAllSignedนโยบายการดำเนินการ (คำใบ้: มันเริ่มทำงานหลังจากติดตั้งService Pack ล่าสุดและใช้วิธีแก้ปัญหาของ Adam Meltzer ) ตอนนี้มันเป็นประโยชน์ในการใช้สคริปต์ PowerShell สำหรับการตรวจจับแอปพลิเคชันทำให้ฉันสงสัยในสิ่งต่อไปนี้: ไคลเอนต์ SCCM เรียกใช้สคริปต์ตรวจจับ PowerShell ในบริบทใด ระบบ? ผู้ใช้? บริบทขึ้นอยู่กับว่าคุณเลือก "ติดตั้งสำหรับผู้ใช้" หรือ "ติดตั้งสำหรับระบบ" ในประเภทการปรับใช้หรือไม่ เอกสารประกอบค่อนข้างเบาบางในหัวข้อนี้ ทรัพยากรที่ดีที่สุดที่ฉันพบสำหรับสคริปต์การตรวจจับ SCCM PowerShell คือโพสต์บล็อกของ Kloud นี้อย่างไรก็ตามมันเงียบในเรื่องของบริบท

1
Set-RDSessionCollectionConfiguration Connection Broker เชื่อมต่อกับ localhost
ฉันใช้คำสั่งต่อไปนี้จากคอนโซล PowerShell บนเครื่อง Windows 8 พยายามกำหนดค่านายหน้าการเชื่อมต่อเซิร์ฟเวอร์ RDS 2012 R2: Import-Module RemoteDesktop Set-RDSessionCollectionConfiguration -CollectionName "Example" -CustomRdpProperty "gatewayhostname:s:rdp.example.com" -ConnectionBroker "ep-ts01.ad.example.com" อย่างไรก็ตามแม้ว่าฉันกำลังระบุการเชื่อมต่อซึ่งนายหน้าจะใช้ก็มักจะพยายามที่จะเชื่อมต่อกับlocalhost: ใหม่ PSSession: [localhost] การเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล localhost ล้มเหลวด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้: clie ไม่สามารถเชื่อมต่อกับปลายทางที่ระบุในคำขอ ตรวจสอบว่าบริการบนปลายทางกำลังเรียกใช้กำลังรับคำขอ ศึกษาบันทึกและเอกสารประกอบสำหรับบริการ WS-Management ที่ทำงานบนปลายทางโดยทั่วไปคือ IIS หรือ WinRM หากปลายทางคือบริการ WinRM ให้เรียกใช้คำสั่งต่อไปนี้บนปลายทางเพื่อวิเคราะห์และกำหนดค่าบริการ WinRM: "winrm quickconfig" สำหรับข้อมูลเพิ่มเติมดูหัวข้อ about_Remote_Troubleshooting Help อย่างไรก็ตามGet-RDSessionCollection -ConnectionBroker ep-ts01.ad.example.comทำงานได้ดีและส่งคืนคอลเลกชัน มันเป็นเรื่องเดียวกันถ้าฉันทำEnter-PSSession ep-ts01.ad.example.comและเรียกใช้จากที่นั่น อย่างไรก็ตามถ้าฉันเรียกใช้คำสั่งจากเซิร์ฟเวอร์เอง (เช่นไม่ใช่จากระยะไกล) …

4
ฉันจะแตกต่างสองโฟลเดอร์ใน Windows Powershell ได้อย่างไร
ฉันพยายามค้นหาความแตกต่างในเนื้อหาของโครงสร้างโฟลเดอร์ทั้งสองโดยใช้ Windows Powershell ฉันใช้วิธีการต่อไปนี้เพื่อให้แน่ใจว่าชื่อไฟล์เหมือนกัน แต่วิธีนี้ไม่ได้บอกฉันว่าเนื้อหาของไฟล์เหมือนกัน: $firstFolder = Get-ChildItem -Recurse folder1 $secondFolder = Get-ChildItem -Recurse folder2 Compare-Object -ReferenceObject $firstFolder -DifferenceObject $secondFolder เทคนิคที่อธิบายไว้ในคำถาม ServerFault นี้ทำงานเพื่อกระจายไฟล์เดียว แต่โฟลเดอร์เหล่านี้มีไฟล์หลายร้อยไฟล์ที่มีความลึกหลากหลาย วิธีการแก้ปัญหาไม่จำเป็นต้องบอกฉันว่าอะไรในไฟล์นั้นแตกต่างกันโดยเฉพาะ ฉันไม่สนใจความแตกต่างของข้อมูลเมตาเช่นวันที่ซึ่งฉันรู้อยู่แล้วว่าจะแตกต่างกัน
11 powershell  diff 

5
ไม่สามารถให้สิทธิ์ 'ส่งตาม' ใน Exchange 2010
ฉันกำลังพยายามให้สิทธิ์ 'send-as' แก่ผู้ใช้รายหนึ่งใน Exchange 2010 นี่คือคำสั่ง Powershell ที่ฉันใช้: Add-ADPermission "User1" -User "Ourdomain\User2" -Extendedrights "Send As" Powershell ส่งคืนข้อผิดพลาดนี้: การดำเนินการของ Active Directory ล้มเหลวใน DC.OurDomain.pri ข้อผิดพลาดนี้ไม่สามารถเรียกคืนได้ ข้อมูลเพิ่มเติม: การเข้าถึงถูกปฏิเสธ การตอบสนองของไดเรกทอรีที่ใช้งานอยู่: 00000005: SecErr: DSID-031521D0 ปัญหา 4003 (INSUFF_ACCESS_RIGHTS) ข้อมูล 0 + CategoryInfo: WriteError: (0: Int32) [Add-ADPermission], ADOperationException AddADPermission ฉันได้ลองหลายทางเลือกสำหรับคำสั่ง Powershell - เช่น ใช้ -Identity เป็นต้น แต่นั่นและตัวช่วยสร้าง …

5
คำสั่ง Powershell Switch ที่มีหลายค่า
ใครรู้ว่าฉันสามารถมีคำสั่งสลับกับค่าที่เป็นไปได้หลายอย่างเช่นตัวอย่างด้านล่าง? switch ($myNumber) { 1 3 5 7 9 { write-host "Odd" } 2 4 6 8 10 {write-host "Even" } } เคยเป็นเรื่องง่ายใน VBScript ดังนั้นฉันแน่ใจว่าฉันแค่คิดถึงบางอย่างที่เรียบง่าย เช่นใน VBScript Select Case myNumber Case 1,3,5,7,9 MsgBox "Odd" Case 2,4,6,8,10 MsgBox "Even" End Select ไชโยล่วงหน้า เบน
11 powershell 

7
ฉันจะเปิดหรือปิดคุณสมบัติ windows โดยใช้ powershell หรือ commandline ใน windows 7 ได้อย่างไร
ฉันเขียนสคริปต์sysocmgrใน Windows XP servermanagercmdในเซิร์ฟเวอร์ 2008 และตอนนี้ฉันพบว่าฉันต้องใช้โมดูล PowerShell ใหม่servermanagerเพื่อติดตั้งคุณสมบัติใน Server 2008 R2 และดังนั้นฉันคาดหวังว่าจะใช้โมดูลเดียวกันใน Windows 7 แต่ไม่ใช่ ที่นั่น ฉันจะติดตั้งฟีเจอร์ Windows โดยใช้บรรทัดคำสั่งหรือ PowerShell ใน Windows 7 ได้อย่างไร

2
วิธีที่ดีที่สุดในการเพิ่มคีย์และค่า HKCU สำหรับผู้ใช้ที่มีอยู่และผู้ใช้ใหม่ทั้งหมด?
ฉันต้องเพิ่มคีย์และค่า HKCU ให้กับเครื่องทั้งหมดใน OU เฉพาะสำหรับโปรไฟล์ผู้ใช้ที่มีอยู่ทั้งหมดและไปยังโปรไฟล์เริ่มต้น วิธีที่ดีที่สุดในการเข้าถึงสิ่งนี้คืออะไร? ฉันสามารถระบุและทำซ้ำผ่าน NTUSER.DATs ทั้งหมดโหลดกลุ่มเพิ่มคีย์และยกเลิกการโหลดรัง แต่ดูเหมือนว่าจะเป็นวิธีที่น่าสนใจ ใครมีความคิดที่ดีกว่า ฉันต้องการเขียนสคริปต์นี้ (ควรใช้ PowerShell) และผลักดันการเปลี่ยนแปลงหากเป็นไปได้ แต่สคริปต์การเข้าสู่ระบบของนโยบายกลุ่มก็ใช้ได้เช่นกัน

2
ตัวกรองความแตกต่างของประสิทธิภาพ PowerShell กับฟังก์ชัน
ขณะนี้ฉันกำลังอ่านหนังสือ Windows PowerShell 3.0 ทีละขั้นตอนเพื่อรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ PowerShell ในหน้า 201 ผู้เขียนแสดงให้เห็นว่าตัวกรองนั้นเร็วกว่าฟังก์ชั่นที่ใช้งานได้ สคริปต์นี้ใช้เวลา 2.6 วินาทีในคอมพิวเตอร์ของเขา: MeasureAddOneFilter.ps1 Filter AddOne { "add one filter" $_ + 1 } Measure-Command { 1..50000 | addOne } และอันนี้ 4.6 วินาที MeasureAddOneFunction.ps1 Function AddOne { "Add One Function" While ($input.moveNext()) { $input.current + 1 } } Measure-Command { 1..50000 …
11 powershell 

3
จะส่งพารามิเตอร์ไปยังฟังก์ชันได้อย่างไร
ฉันต้องการประมวลผลสำเนาการทำงาน SVN ในสคริปต์ PS แต่ฉันมีปัญหาในการส่งอาร์กิวเมนต์ไปยังฟังก์ชัน นี่คือสิ่งที่ฉันมี: function foo($arg1, $arg2) { echo $arg1 echo $arg2.FullName } echo "0: $($args[0])" echo "1: $($args[1])" $items = get-childitem $args[1] $items | foreach-object -process {foo $args[0] $_} ฉันต้องการที่จะผ่าน$arg[0]เป็น$arg1ไปfooและเป็น$arg[1] $arg2อย่างไรก็ตามมันใช้งานไม่ได้ด้วยเหตุผลบางอย่าง$arg1ว่างเปล่าเสมอ: PS C:\Users\sbi> .\test.ps1 blah .\Dropbox 0: blah 1: .\Dropbox C:\Users\sbi\Dropbox\Photos C:\Users\sbi\Dropbox\Public C:\Users\sbi\Dropbox\sbi PS C:\Users\sbi> หมายเหตุ:พารามิเตอร์ไม่ผ่านเป็น"blah"$arg1 ฉันแน่ใจว่านี่เป็นสิ่งที่เรียบง่ายเฮฮา …
11 powershell 

5
ฉันจะเพิ่มสิทธิ์ ACL สำหรับบัญชี IIS APPPOOL \ * ผ่าน Powershell ได้อย่างไร
ฉันต้องการที่จะสามารถตั้งค่าบัญชี IIS สำหรับเว็บไซต์ใหม่ให้มีการแก้ไขสิทธิ์ ฉันมีสคริปต์ต่อไปนี้: function Set-ModifyPermission ($directory, $username, $domain = 'IIS APPPOOL') { $inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" $propagation = [system.security.accesscontrol.PropagationFlags]"None" $acl = Get-Acl $directory $user = New-Object System.Security.Principal.NTAccount($domain, $username ) $accessrule = New-Object system.security.AccessControl.FileSystemAccessRule($user, "Modify", $inherit, $propagation, "Allow") $acl.AddAccessRule($accessrule) set-acl -aclobject $acl $directory } อย่างไรก็ตามเมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดเช่นนี้: Set-Acl: ความสัมพันธ์ที่เชื่อถือได้ระหว่างเวิร์กสเตชันนี้และโดเมนหลักล้มเหลว ผมคิดว่านี่เป็นเพราะIIS APPPOOLไม่ได้เป็นโดเมนจริง แต่เป็นคำนำหน้าแปลกในบัญชีชนิดของปลอม …

4
ป้องกัน foreach loop เมื่อรายการว่าง
ใช้ Powershell v2.0 ฉันต้องการลบไฟล์ใด ๆ ที่เก่ากว่า X วัน: $backups = Get-ChildItem -Path $Backuppath | Where-Object {($_.lastwritetime -lt (Get-Date).addDays(-$DaysKeep)) -and (-not $_.PSIsContainer) -and ($_.Name -like "backup*")} foreach ($file in $backups) { Remove-Item $file.FullName; } อย่างไรก็ตามเมื่อการสำรองข้อมูล $ ว่างเปล่าฉันได้รับ: Remove-Item : Cannot bind argument to parameter 'Path' because it is null. ฉันได้พยายาม: ปกป้องด้านหน้าด้วย …
10 powershell 

4
ฉันจะค้นหาวัตถุคอมพิวเตอร์ที่ถูกโยงถึงใน Active Directory โดยใช้ PowerShell ได้อย่างไร
ฉันจะค้นหาบัญชีคอมพิวเตอร์ทั้งหมดในโดเมน Active Directory ที่ไม่ได้ใช้งานเป็นเวลา x วันโดยใช้ PowerShell ได้อย่างไร โปรดทราบว่าฉันรู้จริงวิธีการทำเช่นนี้ นี่เป็นคำถามที่ตอบตัวเองเพียงเพื่อให้ได้ความรู้ที่นั่น หากใครมีวิธีที่ดีกว่าอย่าลังเลที่จะโพสต์มัน!

3
พารามิเตอร์ PowerShell
ฉันมีบล็อก Param ในสคริปต์ของฉัน Param ( [Parameter(Mandatory=$True)] [string]$FileLocation, [Parameter(Mandatory=$True)] [string]$password = Read-Host "Type the password you would like to set all the users to" -assecurestring ) ฉันสามารถใช้ Read-Host CmdLet ในฟิลด์ Parameter ที่ต้องการได้หรือไม่? หากไม่มีสิ่งที่ฉันสามารถทำได้เพื่อให้แน่ใจว่าฉันใช้ประเภทตัวแปรที่ถูกต้องเพื่อให้ฉันสามารถส่งผ่านไปยังกระบวนการสร้างผู้ใช้ได้หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.