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

Windows PowerShell เป็นเชลล์บรรทัดคำสั่งและภาษาสคริปต์สำหรับ Windows ที่แทนที่เชลล์ CMD.exe และภาษาแบตช์ PowerShell ยังเป็นเอ็นจิ้นระบบอัตโนมัติสำหรับ Windows ที่มีฟังก์ชันการทำงานคล้ายกับ Windows Script Host และ VBScript

2
การใช้คุณลักษณะ get-aduser เป็นเงื่อนไข
ฉันมีรายชื่อพนักงานที่ต้องการการเข้าถึง skype และฉันต้องการเรียกใช้สคริปต์ผู้ใช้ที่สร้างจากรายการนี้ แต่จะให้มันทำงานกับผู้ที่ไม่มี msRTCSIP-UserEnabled เป็นค่า Null ต่อไปนี้จะแสดงให้ฉันเห็นว่า msRTCSIP-UserEnabled มีอยู่หรือเป็น True get-aduser -identity $username -Properties msRTCSIP-UserEnabled ฉันต้องใช้ค่าเป็นเงื่อนไขในสิ่งที่ชอบ foreach($username in $userlist) { if (get-aduser -identity $username -Properties msRTCSIP-UserEnabled -eq $null) {Run user creation / output script} else {continue to next $username} } ฉันทำงานทั้งหมด / แสดงผลอย่างถูกต้อง แต่ดูเหมือนจะไม่สามารถหาวิธีใช้ค่าแอตทริบิวต์ msRTCSIP-UserEnabled เป็นเงื่อนไขได้ ฉันได้ลองมองไปรอบ ๆ แต่ทุกอย่างที่ฉันเห็นในที่นี้คือเพื่อดึงข้อมูลจากโฆษณาไม่ใช่รายการไฟล์เฉพาะ

2
สร้างใบรับรอง PFX แล้ว แต่ไม่ได้เปิดใช้การเข้ารหัส
ฉันสร้างใบรับรอง PFX โดยใช้พรอมต์คำสั่งสำหรับนักพัฒนา Visual Studio ด้วยวิธีต่อไปนี้ makecert -r -pe -n "CN=mycert" -sky exchange "mycert.cer" -sv "mycert.pvk" pvk2pfx -pvk "mycert.pvk" -spc "mycert.cer" -pfx "mycert.pfx" -pi [password] จากนั้นฉันใช้ PowerShell เพื่อสอบปากคำใบรับรอง $cert = Get-PfxCertificate [Location] $cert.Verify() # Returns 'False' ฉันจะรับใบรับรองนี้เพื่อใช้ในการเข้ารหัสได้อย่างไร ปรับปรุง @root แนะนำโดยใช้Import-PfxCertificateคำสั่ง นี่คือสิ่งที่เกิดขึ้นเมื่อฉันเรียกใช้ Import-PfxCertificate -FilePath [Path] Import-PfxCertificate : The PFX file you …

1
การป้อน cmd ในแถบที่อยู่ของ file explorer ไม่ทำงาน
ฉันพยายามเปิดอินสแตนซ์ของพรอมต์คำสั่งโดยพิมพ์ 'cmd' บนแถบที่อยู่ของ windows explorer และกด Enter แต่ไม่มีอะไรเกิดขึ้น โดยปกติแล้วอินสแตนซ์ของพรอมต์คำสั่งที่มีพา ธ ที่คุณเปิดจะปรากฏขึ้น สิ่งที่อาจหยุดทำงานไม่ได้? --UPDATE-- เข้าสู่ powershell ในแถบที่อยู่ไม่ทำงานเช่นกัน - UPDATE 2-- ตัวอย่างเส้นทางไฟล์ที่ฉันพยายามเข้าถึงพรอมต์คำสั่ง: C:\Projects\Python - UPDATE 3-- เข้าสู่ cmd จาก Windows + r สร้างตัวอย่างของพรอมต์คำสั่ง - อัปเดต 4-- หลังจากพยายามเปิด powershell ในไดเรกทอรีไฟล์ฉันพบข้อผิดพลาด สกรีนช็อตของ Powershell - ปรับปรุง 5-- ฉันใช้บัญชีผู้ดูแลระบบ Shift + Right Click และกดปุ่ม Open powershell …

4
ข้อผิดพลาดพา ธ ในสคริปต์
ฉันเป็น Googling เพื่อค้นหาสคริปต์ PS เพื่อนับประเภทไฟล์และไฟล์ในหลายไดเรกทอรีในเครือข่าย ฉันมีไดเรกทอรีหลายรายการในไดเรกทอรี "ห้องสมุด" ของฉันบนพีซีที่ทำงาน ฉันแค่พยายามทดสอบสคริปต์ PS เพื่อให้มันทำงานเพื่อนับจำนวนไฟล์และแสดงประเภทไฟล์ในโฟลเดอร์ "Libraries \ Documents \ Tidbits" ของฉัน: Get-ChildItem \\hilltop3\users$\LongRandy\My Documents\TIDBITS แต่ฉันได้รับข้อผิดพลาดนี้: Get-ChildItem : Cannot find path '\\hilltop3\users$\LongRandy\My' because it does not exist. At line:1 char:14 + Get-ChildItem <<<< \\hilltop3\users$\LongRandy\My Documents\TIDBITS + CategoryInfo : ObjectNotFound: (\\hilltop3\users$\LongRandy\My:String) [Get-ChildItem], ItemNotFoundExc eption + FullyQualifiedErrorId …

1
สคริปต์ของฉันเขียนทับรายการก่อนหน้าหลังจากวน "foreach" แต่ละครั้ง
สคริปต์ที่ฉันมีที่นี่เขียนข้อมูลที่ฉันต้องการ อย่างไรก็ตามฉันสังเกตเห็นว่าแต่ละรายการที่ถูกต้องใหม่จะแทนที่รายการสุดท้าย ฉันไม่สามารถหาสาเหตุ ดังนั้นสิ่งที่ฉันจบลงก็คือเพียง 1 รายการทุกครั้งแม้ว่าจะตรวจพบคอมพิวเตอร์ 1,000 เครื่อง โปรดช่วยฉันหาสิ่งนี้ด้วย $computers = Get-ADComputer -SearchBase "DC=some,DC=web,DC=com" -Filter * | Select-Object -ExpandProperty Name foreach ($computer in $computers){ if(!(Test-Connection -CN $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) {write-host "Cannot reach $computer offline." -f red} else { $outtbl = @() Try{ $sr=Get-WmiObject -Class Win32_BIOS …

1
ภารกิจตามกำหนดเวลาของ Windows 10 ทำงานในฐานะผู้ใช้ที่เป็นผู้ดูแลระบบจะไม่เรียกใช้ PowerShell
ฉันมีงาน windows 10 ที่ฉันพยายามตั้งให้ทำงานเป็นผู้ใช้โดเมนที่อยู่ในกลุ่มผู้ดูแลระบบในเครื่องที่กำลังทำงานอยู่ การทำงานกำลังเรียกใช้สคริปต์ PowerShell ฉันรู้ว่าสคริปต์ทำงานได้ดีเมื่อฉันทำงานภายใต้บัญชีของฉันมันทำงานได้ดี เมื่อใช้มันเป็นบัญชีโดเมนดูเหมือนว่าจะไม่ทำอะไรเลย ฉันจะตรวจสอบข้อความแสดงข้อผิดพลาดได้ที่ไหน การกระทำหนึ่งที่ฉันตั้งค่าก่อนที่จะเรียกใช้สคริปต์ก็คือการใช้ powershell และตั้งค่านโยบายการปฏิบัติให้เป็นแบบไม่ จำกัด ไม่ควรที่จะอยู่ในกลุ่มผู้ดูแลระบบในท้องถิ่นว่ามีสิทธิ์เพียงพอสำหรับสิ่งนี้หรือไม่? นี่คือสคริปต์ powershell Echo "test" Read-Host -Prompt "press any key to exit"

1
PowerShell - การถ่ายโอนไฟล์ระยะไกลที่มีลำดับความสำคัญต่ำ
ฉันกำลังเขียนสคริปต์ PowerShell ที่ต้องสามารถดาวน์โหลดไฟล์ขนาดใหญ่จำนวนมากจากเซิร์ฟเวอร์จำนวนมาก (เช่นโฮสต์เซิร์ฟเวอร์ windows) ในครั้งเดียว เซิร์ฟเวอร์เหล่านี้จำนวนมากอาจใช้สำหรับกิจกรรมที่สำคัญและดังนั้นจึงเป็นสิ่งสำคัญที่วิธีการถ่ายโอนมีความสามารถในการจางหายไปเป็นพื้นหลังเมื่อโหลดบนเซิร์ฟเวอร์เริ่มสูงขึ้น นี่คือวิธีการถ่ายโอน 3 วิธีที่ฉันรู้พร้อมกับสาเหตุที่ฉันไม่คิดว่ามันดีพอสำหรับงาน BitsTransfer : สิ่งแรกที่นึกได้คือ BitsTransfer ( https://docs.microsoft.com/en-us/powershell/module/bitstransfer/start-bitstransfer?view=win10-ps ) อย่างไรก็ตามมีปัญหาร้ายแรงเกี่ยวกับวิธีการนี้เนื่องจากไม่สามารถถ่ายโอนไฟล์ที่ใช้เพื่อเขียนโดยกระบวนการอื่นและไฟล์จำนวนมากที่ต้องดาวน์โหลดจากเซิร์ฟเวอร์จะอยู่ใน สถานะ. ดู start-bitstransfer: กระบวนการไม่สามารถเข้าถึงไฟล์ได้เนื่องจากกำลังถูกใช้โดยกระบวนการอื่น สำหรับปัญหานั้น ... คัดลอกรายการ : สิ่งนี้ไม่ให้ความสำคัญกับการควบคุมดังนั้นจึงมีความเป็นไปได้ที่การถ่ายโอนไฟล์ขนาดใหญ่อาจทำให้เซิร์ฟเวอร์หยุดชะงักในขณะที่กำลังประมวลผลการโหลดที่สำคัญ robocopy : อีกครั้งฉันไม่เห็นการกล่าวถึงลำดับความสำคัญหรือการประมวลผลเบื้องหลัง

1
รับเหตุการณ์ windows เป็นเวลาหนึ่งวัน
ฉันกำลังพยายามสร้าง PowerShell Cmdlet ที่ทำงานทุกวันและแสดงให้ฉันเห็นข้อผิดพลาดที่เกิดขึ้นในวันก่อนหน้า ฉันสามารถทำให้มันแสดง 100 ล่าสุดแทนฉันต้องการที่จะเห็นเพียงหนึ่งที่เกิดขึ้นเมื่อวันก่อน get-eventlog -logname application -newest 100 | select eventid,machinename,entrytype,message,source,timegenerated,username | export-clixml C:\Logs.xml

2
Powershell การกรองหรือการเลือกวัตถุบางอย่าง
ดังนั้นเมื่อฉันเรียกใช้คำสั่งนี้: Get-ADUser -Filter 'Name -like "*svc*"' | select Name, DistinguishedName ฉันได้รับผลลัพธ์ต่อไปนี้: SamAccountName DistinguishedName -------------- ----------------- svc_myaccount CN=svc_myaccount,OU=Service Accounts,OU=me3,OU=me2,DC=me,DC=com ฉันต้องการกรอง DistinguishedName เพื่อให้ OU แรกเท่านั้น ฉันควรเพิ่มว่าฉันจะไม่คาดหวังว่า "บัญชีบริการ" เป็นรายการเดียวในฟิลด์ OU ฉันต้องการผลลัพธ์: SamAccountName DistinguishedName -------------- ----------------- svc_myaccount OU=Service Accounts ฉันพยายามทำให้ตัวนี้เป็นผู้สร้างด้วยการใช้ตัวกรอง แต่ก็ไม่มีโชค บางทีฉันอาจต้องเลิกคำสั่งและกำหนดให้รหัสเพิ่มเติมเพื่อแยก DistinguishedName ฉันรู้สึกว่ามีวิธีแก้ปัญหาง่ายๆนี้และฉันก็ทำให้มันซับซ้อนขึ้น ความคิดหรือความคิดใด ๆ

2
ผนวกตัวแปรเข้ากับสตริง
คุณสามารถผนวกตัวแปรไปยังจุดเริ่มต้นของสตริงได้หรือไม่? ฉันพยายามทำสิ่งนี้ไม่สำเร็จ ในตัวอย่างด้านล่างของฉันฉันได้รับคืนตามตัวอักษรไม่ใช่ตัวแปรสองตัวที่รวมกัน $FileName = "Test.xlsx" $startoffile = "C:\Tremble\" Write-Host $startoffile'FileName' #This prints the literal so what I see in my window is #$ startoffileFileName #My desired output to be seen in the window is #C:\Tremble\Test.xlsx

2
ไม่สามารถเรียกใช้สคริปต์ PowerShell จาก autosys
ฉันใหม่สำหรับ powershell และใช้ 1.0version และฉันพยายามที่จะเขียนสคริปต์ powershell ที่ฉันสามารถดำเนินการโดยใช้ตัวกำหนดเวลาอัตโนมัติ เมื่อฉันเรียกใช้คำสั่งใน autosys powershell -command "& { %MY_HOME%\bin\TestScript.ps1 argument; exit $LASTEXITCODE }" มันทำให้ฉันมีข้อผิดพลาด script cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details. ฉันได้ตั้งค่าการเรียกใช้นโยบายให้เป็นแบบไม่ จำกัด จากบัญชีผู้ใช้ของผู้ดูแลระบบ ไม่แน่ใจว่าฉันควรจะดำเนินการอย่างไรเพื่องาน autosys ของฉันจะเรียกใช้สคริปต์ PowerShell ฉันได้ลองใช้คำพูดเพียงอย่างเดียว แต่ทุกครั้งที่ฉันได้รับข้อผิดพลาดนี้ ขอบคุณ

1
การติดตั้งอัตโนมัติของ VS2017
ขณะนี้ฉันกำลังพยายามเขียนบท (PowerShell) การติดตั้ง Visual Studio 2017 อัตโนมัติบน VM ที่โฮสต์ใน Azure DevTest Lab สคริปต์นั้นง่ายมากเช่น try { Invoke-WebRequest -Uri $vs2017Url -OutFile $vs2017Exe; } catch { Write-Error "Failed to download VS 2017"; } try { Start-Process -FilePath $vs2017Exe -ArgumentList "--add Microsoft.VisualStudio.Workload.NetCoreTools;includeRecommended --passive"; } catch { Write-Error "Failed to install VS 2017"; } ที่ไหน …

1
ตั้งค่าตัวแปรและผลลัพธ์จากฟังก์ชันภายในสตริง - ทั้งหมดเป็นสตริงใน PowerShell
ฉันยังใหม่กับสิ่งนี้และสามารถใช้ความช่วยเหลือบางอย่าง ฉันมีฟังก์ชั่นต่อไปนี้และพยายามที่จะเพิ่มผลลัพธ์จากฟังก์ชั่นลงในสตริงด้านล่าง ฉันพลาดอะไรในการทำสิ่งนี้ให้สำเร็จ ฉันต้องการให้ผลลัพธ์ของ Function SrvName รวมอยู่ในสตริงด้านล่างโดยไม่มีช่องว่างในสองบรรทัดที่ต้องการ. txt เป็นจุดสิ้นสุด Function SrvName { Get-WmiObject -class Win32_ComputerSystem | select-Object name | foreach { $_.name } } SrvName $RPTLOCSpaceRpt = "D:\Svr_Win_Space_Rpt_$(SrvName).txt" $EmailSubject="Server Disk Space Report for SrvName" $EmailBody="Attached is the Server Disk Space Report SrvName" $EmailAttachFile="C:\Svr_Win_Space_Rpt_$(SrvName).txt";

1
Powershell: ตัวแปรแบบไดนามิกภายใน foreach
ฉันกำลังพยายามคำนวณทางคณิตศาสตร์สำหรับรายการแบบไดนามิกของผู้ใช้ที่ฉันจะใช้เพื่อเรียกใช้การค้นหาและนับผลลัพธ์บางอย่างโดยไม่ระบุชื่อ ตัวอย่างเช่น: $users = Get-ADUser -filter blah [int]$usercount = $users.count for ($z=1; $z -le $usercount; $z++) { **** create variable here - $user$z *** } เมื่อสร้างตัวแปรฉันต้องการให้มีลูปเพิ่มเติมโดยที่ฉันจะเพิ่มจำนวนลงในหมายเลขที่เก็บไว้ในตัวแปรแล้ว และไม่ฉันไม่สามารถใช้ตัวแปร $ user ได้เพราะจะต้องคงอยู่หลังจากลูป foreach นี้สิ้นสุด ดังนั้นคำถามคือฉันจะสร้างตัวแปรที่เพิ่มขึ้นโดยไม่ทราบจำนวน จำกัด ของวัตถุที่เป็นไปได้อย่างไร --- แก้ไข --- การเพิ่มตัวอย่างง่ายๆของสิ่งที่ฉันกำลังพูดถึง ... หลังจากข้อเสนอแนะฉันกำลังดูแฮชเทเบิล แต่ก็ยังหาวิธีอ้างอิงไม่ได้ ลองนึกภาพเกมลูกเต๋าระหว่างรายชื่อผู้คนที่มีหลายรอบ ฉันต้องการเพิ่มขึ้นต่อรอบทั้งหมดของพวกเขา ปัญหาของฉันคือบรรทัดสุดท้ายที่ฉันพยายามอัพเดตผลรวมด้วยการหมุน ฉันจะอ้างอิงค่า hashtable ได้อย่างไร [CmdletBinding()] param …

1
ตำแหน่งการดำเนินการสคริปต์การเข้าสู่ระบบ Windows 10
ฉันกำลังมองหาข้อมูลเกี่ยวกับการเปลี่ยนแปลงใด ๆ ที่อาจเกิดขึ้นกับวิธีการเรียกใช้สคริปต์การเข้าสู่ระบบ GPO ใน Windows 10 เทียบกับ Windows 7 ฉันมีการตั้งค่าสคริปต์เข้าสู่ระบบ (powershell) ผ่าน GPO สำหรับ Windows 7 ในการทดสอบอิมเมจ Windows 10 สคริปต์นี้จะปรากฏขึ้นเพื่อคัดลอกครั้งแรกไปยังโฟลเดอร์ temp โปรไฟล์ในเครื่อง สตริงสุ่มสำหรับชื่อ (dyyxi3ra.i2u.ps1) ก่อนที่จะดำเนินการ นี่เป็นปัญหาเนื่องจากซอฟต์แวร์การจัดการที่เราใช้กำลังบล็อกผ่านกฎที่ตั้งค่าไว้ กฎอยู่ในสถานที่และเพิ่งค้นพบสิ่งนี้ในภาพทดสอบ Windows 10 ของฉัน (7 ยังคงฮัมเพลงอยู่) ไม่มีใครรู้ว่าสิ่งนี้เป็นพฤติกรรมที่คาดหวังและมันเปลี่ยนจาก Windows 7 หรือไม่? Google ไม่เป็นประโยชน์และ TechNet ก็เหมือนกำลังมองหาเข็มในกองหญ้าที่ฉันไม่แน่ใจว่ากองหญ้ายังอยู่ ขอบคุณล่วงหน้า. ETA: สิ่งนี้ดูเหมือนจะเป็นพฤติกรรมปกติ เมื่อเข้าสู่ระบบเป็นครั้งที่สองฉันได้รับข้อความคล้ายกันว่าสคริปต์ถูกบล็อกและสตริงแบบสุ่ม. ps1 ที่แตกต่างกัน พยายามเรียกใช้อีกครั้งจากโฟลเดอร์ temp ของโปรไฟล์ในเครื่อง …

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